【问题标题】:How to avoid reinventing the wheel with LWJGL form/text elements如何避免使用 LWJGL 表单/文本元素重新发明轮子
【发布时间】:2017-07-25 14:25:27
【问题描述】:

我正在使用 LWJGL 学习 Java 中的 OpenGL,并希望使用它来模拟物理模型,因此希望拥有一组显示和控件,如按钮、滑块、文本标签等。我有创建这些类型的经验AWT 中的东西,所以在我看来,将 GLFW 窗口嵌入 AWT 窗口中似乎是合乎逻辑的,以便仅使用 openGL 上下文来渲染需要渲染的东西。然而,我在网上找到的所有东西似乎都希望我在 openGL 窗口中创建自己的 HUD,而我在 JPanel 之类的其他现有东西中找不到任何关于嵌入式 GLFW 的有用信息?我对这个主题还是很陌生,所以希望能指出正确的方向。

【问题讨论】:

  • 你必须将你的 gui 渲染成一个屏幕外的图像,然后使用 opengl 渲染它,或者只是搜索一个 lwjgl gui 库
  • 我相信 LWJGL 只允许您为整个窗口创建 OpenGL 上下文。您可能会找到一个库,它可以让您创建一个作为 AWT/Swing 控件的库。我知道你可以用 SWT 来做这件事(但是 SWT 很大,你也许可以找到一个更小的库来做这个)

标签: java opengl awt lwjgl glfw


【解决方案1】:

将 GUI 组件与 LWJGL3(如果您正在使用的话)集成是相当困难的,尤其是如果您不想自己编写代码。但是,您可以想到以下一些解决方案:

  • 使用 LWJGL 2(仍在维护,但旧),已知它能够集成到 AWT/Swing 组件中(但有一些问题)
  • 使用诸如lwjglx 之类的库,它提供了 LWJGL 2 之间的兼容层,并将其与 LWJGL 2 的 GUI 库一起使用(我认为 LWJGL 3 没有可用的 GUI 库,但很有可能这样已更改)

如果您选择第一种解决方案,您可以在开始之前参考这些问题:

要将 LWJGL 2 显示器放入 java.awt.Canvas,您可以执行以下操作:

try {
    Display.setDisplayMode(new DisplayMode(width, height));
    Display.setParent(canvas);
    Display.create();
} catch (LWJGLException e) {
    e.printStackTrace();
    System.exit(0);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 2012-09-01
    • 2014-04-16
    • 2017-10-18
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多