2

我已经使用 OpenGL 4.X 一段时间来编写 Windows 应用程序。我正在使用 GLEW 访问 OpenGL API 和 GLFW 以获取上下文、窗口和输入。现在我计划为一些特定的项目迁移到 Linux。从来没有写过该平台上的 OpenGL 在我想知道当今在 Linux 平台上开发 OpenGL 4.x 软件的通用行业标准是什么?我读过 Mesa3D 并注意到它仅支持GL 3.1。GLEWGLFW是跨平台的,所以我相信我可以在 Linux 上毫无问题地使用它们?希望获得更多提示。

我知道我可以使用Qt OpenGL API,但我目前对“纯”C++ 解决方案感兴趣。

4

1 回答 1

5

我已阅读有关 Mesa3D 并注意到它仅支持 GL 3.1

Mesa 是 OpenGL API 的开源实现,有多个后端,包括开源 GPU 驱动架构 DRI2 的接口。因此,与流行的看法相反,Mesa 不仅仅是一些软件光栅化器(很久以前它曾经是)。

这对你没有任何影响!OpenGL 是一个 API,任何遵循它的实现都可以使用。库的二进制接口(ABI)也定义良好。这意味着,要开始 OpenGL-4 开发,您需要做的就是找到一些支持它的实现,以便您可以测试您的程序。

现在有两个,不幸的是两个都不是开源的:

  • NVidia 专有驱动程序
  • AMD 专有驱动程序

其中任何一个发布的 libGL.so 都遵守 GLX OpenGL ABI 规则,因此您可以安全地将程序与 libGL.so 动态链接,并且它可以与目标系统上安装的任何实现一起使用。

现在只需编译您的程序,您不需要完整的 OpenGL 实现。您所需要的只是一些 libGL.so,这样在外部看起来就像是遵循 ABI 规范的 OpenGL 实现。ABI 规范仅适用于旧的 OpenGL-1.2,并且上面的所有内容都是通过扩展机制加载的。还有OpenGL-4。libGL.so 确实符合这一点的一个实现是...... Mesa。为了让这些扩展加载一些扩展加载器,比如 GLEW。

使长话短说。您可以使用 GLEW 和 Mesa 开发(我的意思是构建)OpenGL-4 应用程序。只有实际执行它,您才需要支持 OpenGL-4 的实现。

于 2012-12-24T09:45:33.033 回答