将项目移植至OpenGL3

7
我正在开发一个跨平台的C++ OpenGL应用程序(Windows,Linux和MacOS),我想知道一些关于将大型应用程序移植到OpenGL 3的建议。我之所以考虑使用OpenGL 3是因为我认为我们可以从使用新的“同步对象”中受益很多。自Geforce 256时代以来,Nvidia就支持这样的扩展(gl_nv_fences),但在OpenGL 3.0+之前,ATI硬件似乎没有等效的功能...
我们的代码非常依赖于glut/freeglut、glu函数、OpenGL 2扩展和CUDA(在支持的硬件上)。我现在面临的问题是,“gl3.h”和“gl.h”彼此不兼容(如gl3.h中所述)。你们知道是否有GL3 glut相当的东西吗?此外,查看CUDA-toolkit头文件,似乎只有在使用旧版本的OpenGL时才能使用GL-CUDA互操作性...(cuda_gl_interop.h包括gl.h...)。我有什么遗漏吗?
非常感谢您的帮助。
1个回答

3
最后一次更新glut是10年前的3.7版本。考虑到这一点,我怀疑它将永远不会支持OpenGL 3.x(或4.x)。
正在开发OpenGlut的人似乎在考虑支持OpenGL 3.x的可能性,但还没有采取任何行动。 FLTK有一个(部分)glut模拟器,但它是部分的,以至于“大量使用glut”的程序可能根本无法使用它。由于FLTK正在积极开发中,我猜它最终会支持OpenGL 3.x(或4.x),但我不认为它已经提供了,而且很可能会有多少时间。
编辑:就CUDA而言,显然(尽管肯定不是微不足道的)答案是改用OpenCL。这与硬件(例如,与ATI / AMD板卡兼容)和新版本的OpenGL更兼容。
那就留下glu了。坦白地说,我认为没有明确或明显的答案。OpenGL正在向远离支持诸如glu之类的东西,并且放弃了曾经是核心OpenGL规范的更多模糊glu-like功能(例如,所有矩阵操作原语)。个人认为这是一个错误,但无论是好还是坏,事情就是这样。不幸的是,glu有点像glut-规范的最后一次更新是在1998年,对应于OpenGL 1.2。这并不使更新看起来有可能。不幸的是,我也不知道有什么真正直接的替代品。显然有其他提供(至少一些)类似功能的图形库,但我想到的所有库都需要大量重写。

实际上,GLUT并不是问题,因为我们很快就会停止使用它...但GLU和CUDA互操作仍然存在问题。还是感谢你的回答! - El Weon
非常感谢您的编辑!我也认为OpenGL的新方向是个错误。。。毕竟,使用旧的固定管线范例进行了那么多开发,似乎委员会正在做出一次毫无必要的大胆举动...好吧,该学习OpenCL了 ;) - El Weon
@Decapsuleur:我应该再加一个细节:由于你显然同时使用计算(CUDA / OpenCL)和绘图(OpenGL),你可能还想考虑使用OpenGL 4。它可以提高像这样混合两者的能力,如果你要跨越这个鸿沟,那么“跳跃”并不会很大(就这么说)。 - Jerry Coffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接