Как использовать LWJGL в приложении Eclipse (RCP)? - PullRequest
1 голос
/ 11 декабря 2011

Я хочу использовать LWJGL в приложении Eclipse RCP, но, используя плагин из http://lwjgl.org/update или вручную помещая jar-файлы в classpath и добавляя записи Bundle-NativeCode, мое приложение зависает при запуске после того, как вошли:

! ENTRY org.lwjgl 1 1 2011-12-11 00: 27: 11.122 ! СООБЩЕНИЕ Установите org.lwjgl.librarypath в /Users/thsoft/Development/workspace/org.lwjgl/native/macosx, ОС: mac os x (x86_64) 2011-12-11 00: 27: 11.144 java [43495: 407] [Режим совместимости с Java CocoaComponent]: включен 2011-12-11 00: 27: 11.145 java [43495: 407] [Режим совместимости с Java CocoaComponent]: установка времени ожидания для SWT равным 0,100000

У меня есть -Dorg.lwjgl.librarypath = / Users / thsoft / Development / MRP / org.lwjgl / native / macosx среди аргументов виртуальной машины конфигурации запуска.

(Я могу использовать LWJGL в простом проекте Java без проблем, проблема возникает только в случае проекта подключаемого модуля. Я нахожусь на OS X 10.7.2.)

Кому-нибудь удалось создать приложение RCP с использованием LWJGL?

Ответы [ 2 ]

1 голос
/ 15 января 2012

GEF3D использует LWJGL и работает на OSX - так что теоретически это возможно сделать. Я бы посмотрел на специфичный для lwjgl код рендерера - см. http://wiki.eclipse.org/GEF3D_Installation#Install_a_Renderer для некоторых мелких деталей.

К сожалению, документация для GEF3D скудна, но, возможно, это начало.

0 голосов
/ 24 января 2012

Это была не проблема пути к классам, а неправильное использование OpenGL в контексте приложения SWT. Я использовал пример кода из здесь :

try {
    Display.setDisplayMode(new DisplayMode(800,600));
    Display.create();
} catch (LWJGLException e) {
    e.printStackTrace();
    System.exit(0);
}

// init OpenGL here

while (!Display.isCloseRequested()) {

    // render OpenGL here

    Display.update();
}

Display.destroy();

Пример правильного использования описан здесь :

    final Display display = new Display();
    Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    Composite comp = new Composite(shell, SWT.NONE);
    comp.setLayout(new FillLayout());
    GLData data = new GLData ();
    data.doubleBuffer = true;
    final GLCanvas canvas = new GLCanvas(comp, SWT.NONE, data);

    canvas.setCurrent();
    try {
        GLContext.useContext(canvas);
    } catch(LWJGLException e) { e.printStackTrace(); }
...