1

我试图让 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。我把修改后的代码片段放在这里


编辑:现在我明白错误信息了。文档说:

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

如何创建第一个GLContext

4

2 回答 2

2

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

他们最近对 JOGL 进行了一些不错的清理,因此如果没有一些不错的按摩,大多数示例甚至都无法编译。如果您是新手,您可能希望在启动时回滚到具有更高代码示例兼容性的旧版本。

于 2010-09-02T15:51:17.357 回答
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中的教程。

于 2010-10-25T14:33:41.623 回答