2010-06-03 149 views
7

我正在研究C++跨平台OpenGL应用程序(Windows,Linux和MacOS),我想知道是否有人可以在将大型应用程序移植到OpenGL 3时分享一些建议。我正在研究OpenGL 3,因为我认为我们可以从使用新的“同步对象”中获益很多。 Nvidia自从Geforce 256天(gl_nv_fences)以来一直支持这种扩展,但在OpenGL 3.0 +之前似乎在ATI硬件上没有相应的功能... ...将项目移植到OpenGL3

我们的代码使得glut/freeglut,glu函数, OpenGL 2扩展和CUDA(在支持的硬件上)。我现在面临的问题是“gl3.h”和“gl.h”是相互不兼容的(如gl3.h中所述)。你们知道是否有GL3的同类产品?另外,看一下CUDA工具包头文件,似乎GL-CUDA互操作性只有在使用旧版本的OpenGL时才可用...(cuda_gl_interop.h包含gl.h ...)。我错过了什么吗?

非常感谢您的帮助。

回答

3

最后更新过剩为3.7版本,大约10年前。考虑到这一点,我怀疑它会有史以来支持OpenGL 3.x(或4.x)。

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

FLTK有一个(部分)过剩模拟,但它的部分足以让一个“大量使用过剩”的程序可能无法与它一起工作。由于FLTK正在积极开发中,我猜想它最终会支持OpenGL 3.x(或4.x),但我不相信它已经提供,并且可能会有疑问, 。

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

这留下了glu。坦率地说,我不认为有明确或明显的答案。 OpenGL的从支撑之类的东西Glu和而不是丢弃甚至更多的曾经是核心的OpenGL规范(例如,所有的矩阵操作的原语)的一部分的隐约谷氨酸样功能支持移动。就我个人而言,我认为这是一个错误,但无论它是好还是坏,事情就是这样。不幸的是,glu有点像过剩 - 这个规范的最后一次更新是在1998年,对应于OpenGL 1.2。这根本不会使更新看起来可能。不幸的是,我不知道它有任何真正的直接替代品。显然还有其他图形库提供(至少一些)类似的功能,但是我所能想到的所有图形库都需要大量的重写。

+0

事实上,GLUT是不是一个真正的问题,因为我们很快将停止使用它......但GLU和CUDA的互操作性仍然是有问题的。不过,谢谢你的回答! – 2010-06-03 18:12:53

+0

非常感谢您的编辑!我认为OpenGL的新方向也是一个错误......经过使用旧的固定管道范例进行的所有开发之后,似乎董事会正在无条件地采取大胆的举措...噢,学习OpenCL i的时间猜;) – 2010-06-04 12:52:34

+0

@Decapsuleur:我要补充一个细节:因为你显然混合计算(CUDA/OpenCL的)和绘图(OpenGL的),你可能也想看看使用OpenGL 4.提高混合的能力这两个人是这样的,如果你打算跳起来,跳起来不会太大(可以这么说)。 – 2010-06-04 14:10:34