2010-09-02 24 views
1

我想讓SWT與最新的JOGL(2.0)一起工作。如何使JOGL 2.0與SWT協同工作?

我試過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

簡單的方法:讓你的渲染類實現GLEventListener和移動你GLContext創建代碼爲.init(...)回調(好像你張貼的例子正確的位置)。然後將該偵聽器添加到您用作顯示小部件的任何GLCanvas或類似的東西中。

最近他們清理了JOGL,所以大多數例子甚至不會在沒有適當按摩的情況下進行編譯。如果您是新手,那麼您可能希望在更快的代碼示例兼容性的情況下回滾到舊版本。

+0

在整個SWT中搜索,我沒有發現任何提及'GLEventListener'。如何「附加」到畫布('org.eclipse.swt.opengl.GLCanvas')? – mik01aj 2010-09-03 07:26:24

+0

@ m01:啊。出於某種原因,SWT庫從JOGL中刪除了很多東西。 'GLCanvas'通常實現'GLAutoDrawable',它接受'GLEventListener'。是否有任何限制阻止您使用vanilla JOGL庫? – 2010-09-03 23:50:35

+0

完全沒有限制;我只是不知道該怎麼做。 (我需要將它放在SWT GUI中) – mik01aj 2010-09-06 06:42:53

0

教程http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/顯示瞭如何做到這一點。我修改了從JOGL2版本http://github.com/sgothel/jogl-demos/blob/master/src/demos/swt/Snippet209.java開始的SWT片段209。

我的教程顯示瞭如何將它作爲Eclipse RCP應用程序(僅使用SWT,不使用AWT橋)。要將其作爲獨立的SWT應用程序使用,請參閱https://sites.google.com/site/justinscsstuff/jogl-tutorials

相關問題