我只是将项目从Visual Studio迁移到Eclipse,因此我可以为Linux构建它们,但是我遇到了OpenGl库文件的问题。 Visual Studio附带了Microsoft的库和头文件,用于在项目中包含OpenGL,但Eclipse不是这种情况。我不知道哪些许可用于那些微软的文件,所以我不想只是从他们的SDK“窃取”它们,但我找不到任何替代方案。我发现只是MESA。它应该是类似OpenGL的,但我不确定它有什么区别。那么,如果不是微软的话,我有哪些选择?
编辑:我一直在阅读MESA,我可以说这不是一个选择。他们声称他们的GLSL编译器仅支持1.2版。那是非常古老的。我的项目至少需要GLSL 1.5。
答案 0 :(得分:2)
OpenGL不是一些库,而是一个API。安装的图形驱动程序实现OpenGL,您的程序从驱动程序加载OpenGL。 Mesa3D是一组开源驱动程序和OpenGL API for Linux的实现。但是,如果你安装了NVidia或AMD / ATI专有驱动程序,那就是那些在你的系统上实现OpenGL的人。
对于开发,你唯一需要知道的是,你的程序应该动态链接libGL.so(Linux)或opengl32.dll(Windows),并且除了OpenGL-1.1之外的任何功能都是通过所谓的扩展系统提供,它最容易通过像GLEW(http://glew.sf.net)这样的库来使用。
您无需安装或链接到您的程序中的库!
系统的OpenGL实现当然是一个库,但所有OpenGL实现都实现了相同的API,而且你使用的是这个API。
对于Windows下的开发,编译器应该发送正确的标题(MinGW,Cygwin和Microsoft的SDK随附),以及一个名为 opengl32.lib 的链接器信息库存根。
在Linux for development下,安装Mesa3D开发库,它为您提供最小的头和一个stub libGL.so ,为链接器提供信息,以便将正确的导入表构建到可执行文件中。 / p>
您的程序不需要包含一些OpenGL,而是希望它安装在系统上 - 这是一个非常安全的假设。即使是Windows Vista和7也提供了一些OpenGL实现,而在Linux中,这是一个常见的安装方式。在MacOS X上它始终存在,因为整个OS X GUI都建立在OpenGL之上。