5

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

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

4

3 回答 3

3

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

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

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

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

于 2013-01-07T08:15:39.397 回答
1

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

于 2013-01-07T07:45:36.287 回答
0

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

简单的方法。

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

更复杂的方式。

  1. 向 jogl+gluegen 添加所需的功能,他们有一种代码生成器。

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

于 2013-01-07T09:06:51.597 回答