如何使JOGL 2.0与SWT一起使用?

时间:2010-09-02 13:24:40

标签: java swt jogl

我正在努力让SWT使用最新的JOGL(2.0)。

我尝试了SWT snippet 209,但它不起作用。问题是由以下行引起的:

final GLContext context = GLDrawableFactory.getFactory().createExternalGLContext();

...但是当我将getFactory()更改为getFactory(GLProfile.getDefault())(使其与新API兼容)时,它会createExternalGLContext()javax.media.opengl.GLException: Error: current context null崩溃。我不明白这个消息:我正在尝试创建一个新的上下文,它抱怨当前为空。为什么呢?

也许有其他方法可以创建GLContext

或者也许可以将GLEventListener与SWT GLCanvas一起使用?

PS。我放置了修改后的代码段here


编辑:现在我理解了错误消息。 Documentation说:

  

在调用此方法时,底层OpenGL上下文必须是当前线程的当前上下文。

如何创建第一个GLContext

2 个答案:

答案 0 :(得分:2)

简单方法:让渲染类实现GLEventListener并将GLContext创建代码移动到.init(...)回调中(对于您发布的示例,它似乎是正确的位置)。然后将该侦听器添加到您用作显示小部件的任何GLCanvas或类似内容中。

他们最近清理了JOGL,所以大多数例子在没有适当的按摩的情况下甚至都不能编译。如果您不熟悉它,可能需要回滚到旧版本,并且在启动时具有更高的代码示例兼容性。

答案 1 :(得分:0)

http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/上的教程展示了如何做到这一点。我从http://github.com/sgothel/jogl-demos/blob/master/src/demos/swt/Snippet209.java的JOGL2版本开始修改了SWT代码段209。

我的教程展示了如何将其作为Eclipse RCP应用程序(仅使用SWT,没有AWT桥接器)。要将其作为独立的SWT应用程序,请在https://sites.google.com/site/justinscsstuff/jogl-tutorials上有一个教程。