如何在Eclipse(RCP)应用程序中使用LWJGL?

时间:2011-12-10 23:41:18

标签: eclipse macos eclipse-rcp lwjgl

我想在Eclipse RCP应用程序中使用LWJGL,但要么使用http://lwjgl.org/update中的插件,要么手动将jar放在类路径中并添加Bundle-NativeCode条目,我的应用程序在登录后挂起:

!ENTRY org.lwjgl 1 1 2011-12-11 00:27:11.122 !MESSAGE将org.lwjgl.librarypath设置为/Users/thsoft/Development/workspace/org.lwjgl/native/macosx,OS: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

我在启动配置的VM参数中有-Dorg.lwjgl.librarypath = / Users / thsoft / Development / MRP / org.lwjgl / native / macosx。

(我可以在普通的Java项目中使用LWJGL而不会出现问题,只有在插件项目的情况下才会出现问题。我在OS X 10.7.2上。)

有没有人成功使用LWJGL创建RCP应用程序?

2 个答案:

答案 0 :(得分:1)

GEF3D使用LWJGL并在OSX上工作 - 所以理论上可以这样做。我会看一下lwjgl特定的渲染器代码 - 请参阅http://wiki.eclipse.org/GEF3D_Installation#Install_a_Renderer了解一些细节。

可悲的是,GEF3D的文档很少,但可能是一个开始。

答案 1 :(得分:0)

这不是类路径问题,而是在SWT应用程序的上下文中错误地使用OpenGL。 我使用的是here的示例代码:

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();

正确用法的示例描述为here

    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(); }