【问题标题】:Porting a project to OpenGL3将项目移植到 OpenGL3
【发布时间】:2011-02-27 08:21:44
【问题描述】:

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

非常感谢您的帮助。

【问题讨论】:

    标签: c++ opengl cuda opengl-3


    【解决方案1】:

    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。这似乎根本不可能进行更新。不幸的是,我也不知道有任何真正直接的替代品。显然还有其他图形库提供(至少一些)类似功能,但我能想到的所有这些都需要大量重写。

    【讨论】:

    • 事实上,GLUT 并不是真正的问题,因为我们很快就会停止使用它……但是 GLU 和 CUDA 的互操作性仍然存在问题。不过,谢谢你的回答!
    • 非常感谢您的编辑!我确实认为 OpenGL 的新方向也是一个错误......在使用旧的固定管道范例完成所有开发之后,似乎董事会正在采取一个无偿的大胆举措......哦,好吧,是时候学习 OpenCL i猜测;)
    • @Decapsuleur:我应该再补充一点:由于您显然在混合计算(CUDA/OpenCL)和绘图(OpenGL),您可能还想研究使用 OpenGL 4。它改进了像这样混合两者的能力,如果你要跳跃,它不会比跳跃大很多(可以这么说)。
    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多