【问题标题】:GLUT alternative in Java & Android?Java和Android中的GLUT替代品?
【发布时间】:2013-01-07 07:32:55
【问题描述】:

我注意到 GLUT 仅适用于 C++。我希望在 Java 上重用我的 OpenGL 代码,然后再次将其移植到 Android。这些系统有什么“标准”来代替 GLUT?

编辑: 事实上,我正在使用 JOGL,并且对通过 Java 重新实现而不是重用 C++ 感兴趣。我对 C++、Java 和 OpenGL 有基本的了解,但还没有什么花哨的东西。我很想弄清楚关于窗口的一切,比如调整大小、着色等。我想知道是否有什么可以帮助我处理一些(更高级的?)函数,比如 glutSwapBuffers()、glutDisplayFunc()、glutMainLoop( ) 等。

【问题讨论】:

    标签: java opengl opengl-es glut jogl


    【解决方案1】:

    JOGL 或 LWJGL 怎么样。它们的 API 与 C++ 过剩是 1:1因为我不喜欢它管理上下文和窗口的方式,但我确实使用 LWJGL 做过商业项目,并且可以说这个库很棒。你也可以将它用于移动开发。

    我想稍微扩展一下这个话题:

    首先,似乎 JOGL 有 GLUT class,它主要负责基元的创建。我还发现 this lib,它是 C++ GLUT 的部分端口。但事实上,我不明白你背后的原因寻求像 lib.JOGL 和 LWJGL 这样的 GLUT C++ 都为您提供内置功能的输入处理、上下文和窗口创建。而在 Java 中,您可能无法在单一屋顶下统一上下文和窗口创建,因为 Android 和 Windows Java 环境以不同的方式做。当然,您始终可以滚动自己的类,该类将在下面处理基于平台的上下文/窗口设置,但我认为这就像重新发明轮子一样。

    关于原始几何体的创建——在这种情况下,我不会费心去研究 GLUT。这些是使用旧的、不推荐使用的(固定的)OpenGL 管道制作的。今天是 2013 年,OpenGL 目前是 4.3 版本,如果你想与这项技术的当前状态同步并从 OpenGL 的许多新功能中受益,我强烈建议您继续前进到 OpenGL 3.3。这样做您需要手动编码几何图形。但是您可以获得许多其他好处,例如完全控制你的渲染管道的工作方式。还有许多关于如何为可编程 OpenGL 创建几何图形的在线示例和教程。 希望对您有所帮助。

    【讨论】:

    • 我目前正在使用JOGL,但它只包含GL和GLU,没有GLUT,我也需要。
    • 您在 GLUT 中究竟需要什么?
    • glutSwapBuffers();谷氨酸启动; glutInitDisplayMode(); glutInit...();, glutCreateWindow(String);过剩显示函数(); glutMainLoop()等。这些都是我一眼就能看到的。
    • 是的,您编辑的答案确实有帮助。当我看看是否有人有任何不同的答案时,我会记住这一点。
    【解决方案2】:

    有jnigraphics,使用NDK为Android开发原生C代码。

    【讨论】:

    • 如果没有必要,我宁愿不使用 NDK。我将其用作学习经验,因此我要先移植到 Java,然后再移植到 Android,并且我不想依赖 NDK 来创建 Android 应用程序。不过感谢您的建议。
    【解决方案3】:

    在 jogl 中对 GLUT 的支持非常有限,它肯定没有 glutInitDisplayMode()。我建议您执行以下操作:

    简单的方法。

    1. 找出您需要的最小过剩函数集;
    2. 创建一个小型动态库,为您调用它们;
    3. Bridj 该库并从您的 Java 应用程序中调用您需要的方法。

    更复杂的方式。

    1. 为 jogl+gluegen 添加所需的功能,他们为此提供了某种代码生成器。

    这种方式更正确,但是: (a) 这是更多的工作; (b) 不幸的是,jogl 维护者不是那么友好,您将无法轻松地与社区共享工作。首先,他们会开始责怪你,你的补丁是一坨屎。后来他们几乎会命令你按照他们需要的方式去做。换句话说,愚蠢的电子邮件需要一个月的时间...... :)

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 2012-01-15
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多