c++ - 将项目移植到 OpenGL3

标签 c++ opengl cuda opengl-3

我正在开发一个 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...)。我错过了什么吗?

非常感谢您的帮助。

最佳答案

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 这样的东西,而是放弃对更多曾经是核心 OpenGL 规范一部分的模糊的类似 glu 的功能的支持(例如,所有矩阵操作原语) .我个人认为这是一个错误,但不管是好是坏,事情就是这样。不幸的是,glu 有点像 glut——该规范的最后一次更新是在 1998 年,对应于 OpenGL 1.2。这似乎根本不可能进行更新。不幸的是,我也不知道有任何真正直接的替代品。显然还有其他图形库提供(至少一些)类似的功能,但我能想到的所有这些都需要大量重写。

关于c++ - 将项目移植到 OpenGL3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966764/

相关文章:

c++ - GpuMat - 访问自定义内核中的 2 channel float 据

c++ - Windows CD 刻录 API

java - 更新和渲染项目符号

c++ - 在 Blender 中制作模型并在 opengl 中加载

c++ - 在 CUDA 扩展 lambda 中捕获变量时出现内存错误

cuda - 是否可以从全局或设备函数调用 CUDA CUBLAS 函数

c++ - vector的容量什么时候会减少?

c++ - asio 分配示例中的 ‘typename’ 是什么意思

c++ - glDrawArrays 不绘制

caching - GPU 中的 L1 缓存