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

时间:2012-12-24 09:02:12

标签: c++ linux opengl

我一直在使用OpenGL 4.X编写Windows应用程序。我正在使用GLEW访问OpenGL API和GLFW以获取上下文,窗口和输入。现在我打算转到Linux进行某些特定项目。在我想知道今天在Linux平台上开发OpenGL 4.x软件的常用行业标准之前,从未在该平台上编写过OpenGL?我已经阅读了有关Mesa3D的内容并注意到it support GL 3.1。{{3并且GLEW是跨平台的,所以我相信我可以在Linux上使用那些没有问题吗?想获得进一步的提示。

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

1 个答案:

答案 0 :(得分:5)

  

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

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

<强>但是

这对你来说无关紧要! OpenGL是一个API,可以使用任何遵循它的实现。此外,库(ABI)的二进制接口也已明确定义。这意味着,启动OpenGL-4开发所需要做的就是找到支持它的某些实现,以便您可以测试您的程序。

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

  • NVidia propiatary drivers
  • AMD propiatary drivers

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

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

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

相关问题