我正在开发一个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过量吗?此外,查看CUDA-toolkit头文件,似乎GL-CUDA互操作性仅在使用旧版本的OpenGL时可用...(cuda_gl_interop.h包括gl.h ...)。我错过了什么吗?
非常感谢你的帮助。
答案 0 :(得分:3)
最近的过剩更新是大约10年前的版本3.7。考虑到这一点,我怀疑它曾支持OpenGL 3.x(或4.x)。
OpenGlut工作的人似乎正在考虑OpenGL 3.x支持的可能性,但还没有做任何事情。
FLTK有一个(部分)过剩模拟,但它足够局部,以至于“大量使用过剩”的程序可能不适用于它。由于FLTK正在积极开发中,我猜它最终将支持OpenGL 3.x(或4.x),但我不相信它已经提供了,并且它可能会有多快问题
编辑:就CUDA而言,显而易见的(虽然肯定是非平凡的)答案将是使用OpenCL。这与硬件(例如,使用ATI / AMD板)和更新版本的OpenGL相当兼容。
离开了。坦率地说,我认为没有明确或明显的答案。 OpenGL正在从支持像glu这样的东西远离,而是放弃了对更多类似于类似于核心的OpenGL规范(例如,所有矩阵操作原语)的模糊类似功能的支持。 。就个人而言,我认为这是一个错误,但无论是好是坏,事情都是如此。不幸的是,glu有点像过剩 - 该规范的最后更新是在1998年,并且对应于OpenGL 1.2。这根本不会使更新变得可能。不幸的是,我也不知道有任何真正的直接替代品。显然有其他图形库提供(至少一些)类似的功能,但我能想到的所有图形库都需要大量的重写。