我已经使用 OpenGL 4.X 来编写 Windows 应用程序一段时间了。我正在使用 GLEW 访问 OpenGL API 和 GLFW 以获取上下文、窗口和输入。现在我计划转向 Linux 来完成一些特定的项目。以前从未在该平台上编写过 OpenGL,我想知道当今在 Linux 平台上开发 OpenGL 4.x 软件的通用行业标准是什么?我读过有关 Mesa3D 的文章并注意到 it support仅限 GL 3.1。 GLEW和 GLFW是跨平台的,所以我相信我可以在 Linux 上使用它们而不会出现任何问题?想获得更多提示。
我知道我可以使用Qt OpenGL API,但我目前对“纯”C++ 解决方案感兴趣。
最佳答案
I have read about Mesa3D and noticed it support GL 3.1 only
Mesa 是 OpenGL API 的开源实现,具有多个后端,包括开源 GPU 驱动程序架构 DRI2 的接口(interface)。因此,与普遍的看法相反,Mesa 不仅仅是一些软件光栅化器(很久以前,它曾经是)。
但是
这对你来说一点都不重要! OpenGL 是一个 API,任何遵循它的实现都可以使用。库的二进制接口(interface)(ABI)也被明确定义。这意味着要开始 OpenGL-4 开发,您所需要做的就是找到支持它的一些实现,以便您可以测试您的程序。
目前有两个,不幸的是都不是开源的:
- NVidia 专有驱动程序
- AMD 专有驱动程序
其中任何一个提供的 libGL.so 都遵守 GLX OpenGL ABI 规则,因此您可以安全地将程序动态链接到 libGL.so,并且它将与目标系统上安装的任何实现一起使用。
现在,只需编译您的程序,您就不需要完整的 OpenGL 实现。您所需要的只是一些 libGL。这样在外部看来就像是遵循 ABI 规范的 OpenGL 实现。 ABI 规范仅适用于旧版 OpenGL-1.2,以上所有内容均通过扩展机制加载。还有 OpenGL-4。 libGL.so 符合这一点的实现是……Mesa。为了让这些扩展加载一些扩展加载器,比如 GLEW。
长话短说。您可以使用 GLEW 和 Mesa 开发(我的意思是构建)OpenGL-4 应用程序。仅当实际执行时,您才需要 OpenGL-4 支持实现。
关于c++ - 在 Linux 上编写 OpenGL 4.X 应用程序的常用库有哪些?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14019246/