7

我正在开发一个 C++ 跨平台 OpenGL 应用程序(Windows、Linux 和 MacOS),我想知道你们中的一些人是否可以分享一些关于将大型应用程序移植到 OpenGL 3 的建议。我正在研究 OpenGL 3 的原因是因为我认为我们可以从使用新的“同步对象”中受益匪浅。自 Geforce 256 天 (gl_nv_fences) 以来,Nvidia 一直支持这样的扩展,但在 OpenGL 3.0+ 之前,ATI 硬件上似乎没有等效功能......

我们的代码大量使用了 glut/freeglut、glu 函数、OpenGL 2 扩展和 CUDA(在支持的硬件上)。我现在面临的问题是“gl3.h”和“gl.h”相互不兼容(如gl3.h中所述)。你们知道是否有 GL3 glut 等价物吗?此外,查看 CUDA-toolkit 头文件,似乎 GL-CUDA 互操作性仅在使用旧版本的 OpenGL 时可用...(cuda_gl_interop.h 包括 gl.h...)。我错过了什么吗?

非常感谢你的帮助。

4

1 回答 1

3

glut 的最后一次更新是大约 10 年前的 3.7 版。考虑到这一点,我怀疑它是否会支持OpenGL 3.x(或 4.x)。

从事OpenGlut工作的人似乎正在考虑支持 OpenGL 3.x 的可能性,但还没有做任何事情。

FLTK有一个(部分)过剩模拟,但它已经足够部分,以至于“大量使用过剩”的程序可能一开始就无法使用它。由于 FLTK 正在积极开发中,我猜它最终会支持 OpenGL 3.x(或 4.x),但我不相信它已经提供,而且它可能会在多长时间内提供.

编辑:就 CUDA 而言,显而易见(尽管肯定不是微不足道的)答案是改用 OpenCL。这与硬件(例如,ATI/AMD 板)和较新版本的 OpenGL 都更加兼容。

剩下glu。坦率地说,我认为对此没有明确或明显的答案。OpenGL 正在摆脱对 glu 之类的支持,而是放弃对更多类似于 glu 的功能的支持,这些功能曾经是核心 OpenGL 规范的一部分(例如,所有矩阵操作原语)。就个人而言,我认为这是一个错误,但不管是好是坏,事情就是这样。不幸的是,glu 有点像 glut——该规范的最后一次更新是在 1998 年,对应于 OpenGL 1.2。这似乎根本不可能进行更新。不幸的是,我也不知道有任何真正直接的替代品。显然还有其他图形库提供(至少一些)类似的功能,但我能想到的所有这些都需要大量重写。

于 2010-06-03T15:39:32.700 回答