0

テキストボックス/エリアを配置したいopenglプログラムがありますが、使用しているopenglウィンドウでこれを行う方法があるかどうかわかりません。これを行うか、またはopenglウィンドウをJFrameに埋め込む方法はありますか?

4

1 に答える 1

4

もちろん方法はあります。OpenGL にレンダリングする独自の GUI 要素を作成できます。これを 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 などと一緒に再生するには、追加の作業が必要なようです。

于 2012-10-30T18:50:23.517 に答える