java - 如何将 GUI 组件放入 OpenGL 屏幕中

标签 java user-interface opengl jframe jtextarea

我有一个 opengl 程序,我想在其中放入一个文本框/区域,但我不确定是否有办法在我拥有的 opengl 窗口中执行此操作。有没有办法做到这一点或将其嵌入或将 opengl 窗口嵌入到 JFrame 中?

最佳答案

当然有一种方法 - 您可以编写自己的 GUI 元素来渲染到 OpenGL。至于是否可以将其嵌入到 JFrame 中 - 这取决于您使用的库,在 LWJGL 中您可能可以使用 Display.setParent 来做到这一点 - 它需要 awt.Canvas,我不知道您是否可以获取一个带有 Swing 组件的组件。

我认为可以这样做:

import java.awt.Canvas;

import javax.swing.JFrame;
import javax.swing.JTextField;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.GL11;

public class CanvasTest {
    public static void main(String[] args) throws LWJGLException, InterruptedException {
        // note that this is a very bare bones
        // proof-of-concept thing. You'd want to 
        // install your own close handlers etc here.
        Canvas openglSurface = new Canvas();
        JFrame frame = new JFrame();
        frame.setSize(800, 800);
        frame.add(openglSurface);
        frame.setVisible(true);
        frame.add(new JTextField("Hello World!"));
        openglSurface.setSize(500, 500);
        Display.setParent(openglSurface);
        Display.create();
        GL11.glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
        Display.update();
        Thread.sleep(2000);
        Display.destroy();
    }
}

我实际上并没有尝试这个,因为我自己从来不需要这个,但它应该可以工作。

注意:我现在确实尝试过。它确实有效,但显然需要一些额外的工作才能使其与 LayoutManager 等一起使用。

关于java - 如何将 GUI 组件放入 OpenGL 屏幕中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145697/

相关文章:

java - Eclipse Google 插件无法启动 Web 应用程序的服务器

java - 为什么我的答案显示为无穷大?

java - @override 注释

java - 降级到 Java 6

wpf - 是否可以通过 D3DImage 和 ANGLE 将 OpenGL ES 代码与 WPF 应用程序一起使用?

c++ - 重复纹理问题

java - 滚动面板不只在图像上显示拇指

java - 如何将幂函数添加到 sigma

user-interface - dotTrace 的数字在逐行分析中的含义是什么?

c++ - 程序特定的 OpenGL 运行时错误 : Multiple Input Buffers For Skinned Animation