Как заставить JOGL 2.0 работать с SWT? - PullRequest
1 голос
/ 02 сентября 2010

Я пытаюсь заставить SWT работать с новейшей версией JOGL (2.0).

Я пробовал фрагмент SWT 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?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Простой способ: пусть ваш класс рендеринга реализует GLEventListener и переместит ваш код создания GLContext в обратный вызов .init(...) (кажется, правильное место для примера, который вы опубликовали) Затем добавьте этот слушатель к тому, что GLCanvas или тому подобное вы используете в качестве вашего виджета дисплея.

В последнее время они довольно хорошо очистили JOGL, поэтому большинство примеров даже не будут компилироваться без приличного массажа. Если вы новичок в этом, вы можете откатиться к более старой версии с более высокой совместимостью с примером кода, пока вы раскручиваетесь.

0 голосов
/ 25 октября 2010

В учебнике по http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ показано, как именно это сделать.Я изменил фрагмент SWT 209, начиная с версии JOGL2 по адресу http://github.com/sgothel/jogl-demos/blob/master/src/demos/swt/Snippet209.java.

. В моем руководстве показано, как сделать это как приложение Eclipse RCP (с использованием только SWT, без моста AWT).Чтобы сделать это как отдельное приложение SWT, есть учебник на https://sites.google.com/site/justinscsstuff/jogl-tutorials.

...