c++ - 在 Linux 上编写 OpenGL 4.X 应用程序的常用库有哪些?

标签 c++ linux opengl

我已经使用 OpenGL 4.X 来编写 Windows 应用程序一段时间了。我正在使用 GLEW 访问 OpenGL API 和 GLFW 以获取上下文、窗口和输入。现在我计划转向 Linux 来完成一些特定的项目。以前从未在该平台上编写过 OpenGL,我想知道当今在 Linux 平台上开发 OpenGL 4.x 软件的通用行业标准是什么?我读过有关 Mesa3D 的文章并注意到 it support仅限 GL 3.1。 GLEWGLFW是跨平台的,所以我相信我可以在 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/

相关文章:

javascript - ssh2 模块静默失败,凭据从 CLI 成功

linux - 为什么/dev/urandom不阻塞?

javascript - 在没有 npm 的情况下使用 socket.io 和 express 模块

c - 驯服 glutTimerFunc

python - 如何测试 pygame 屏幕中的 2d 点是否是 PyOpenGL 中 3d 对象的一部分?

c++ - 避免循环依赖?

c++ - 如何在 C++ 中替换字符串 "ta"中的 "potato"? 2个字符为1

c - View (lookat)和投影(perspective)矩阵无法正常工作

c++ - asio : multiple pending async_read?

c++ - 为什么在 Visual C++ 2008 中链接静态运行时库在运行时仍然需要 MSVCR71.dll?