【发布时间】:2011-06-27 14:29:45
【问题描述】:
我们有一个带有 2D 图形库的 Java 应用程序,它在本机 C++ 端利用 OpenGL。我们将 JNI 调用放入 DLL。现在我被要求让 OpenGL 在应用程序的 SWT 端工作,但不要使用 JOGL 或 LWJGL 或任何其他第 3 方 GL 绑定。这可以做到吗?如何做到?
【问题讨论】:
我们有一个带有 2D 图形库的 Java 应用程序,它在本机 C++ 端利用 OpenGL。我们将 JNI 调用放入 DLL。现在我被要求让 OpenGL 在应用程序的 SWT 端工作,但不要使用 JOGL 或 LWJGL 或任何其他第 3 方 GL 绑定。这可以做到吗?如何做到?
【问题讨论】:
OpenGL 是在 opengl32.dll(或在 unix 上类似)中实现的 C API,因此您必须以一种或另一种方式使用它。
IIRC,为了从 Java 中调用,dll 中的函数必须称为“Java_Classname_Functionname”,这显然不是 openGL 函数的情况。
如果您真的非常想避免使用 LWJOGL,则必须创建自己的 C DLL,该 DLL 使用另一个签名(类似于 Java_MYJOGL_glClearColor 而不是 glClearColor)重新声明所有 openGL 函数,并且仅调用 glClearColor...
这是 LWJGL 已经在做的事情(并且还处理特定于平台的上下文创建和其他东西)。
如果您的公司担心的是避免大型未知库,这是完全可以理解的,我建议您坚持使用 LWJGL,它比 JOGL 更小。
【讨论】: