哪个OpenGL版本最稳定并且目前使用?

时间:2011-04-12 14:54:21

标签: c++ opengl

我一直在考虑为我的项目制作一个额外的包装器来使用OpenGL而不是Allegro。我不确定要使用哪个OpenGL版本,因为我知道有些计算机无法运行最新版本,例如v4.4。另外,我需要一个在Linux,Windows,Mac中没有编译问题的版本。

5 个答案:

答案 0 :(得分:7)

您需要了解目标系统上可用的显卡类型并牢记一些细节:

  • 在大多数系统上,可以在软件中完全模拟高达1.5的OpenGL。您不一定需要硬件支持才能获得良好的性能。
  • OpenGL 1.4具有通用支持。实际上所有硬件都支持它。
  • Mac OS X supports up to OpenGL 2.0 and OpenGL 2.1,具体取决于操作系统版本和硬件。使用GMA950的系统仅支持OGL1.4。 Mac OS X Lion 10.7在支持的硬件上支持OpenGL 3.2 Core配置文件。
  • 在Linux上,用户特别喜欢开源驱动程序而非替代“二进制blob”并不罕见,因此请记住,大多数人只支持OpenGL 2.1兼容性的Mesa版本。即将推出的版本支持OpenGL 3.x.闭源“二进制blob”通常支持硬件的最高OpenGL版本,包括OpenGL 4.2 Core。

在考虑用户可以使用的硬件时,Steam hardware Survey可能有所帮助。请注意,大多数用户都使用与DirectX 9兼容的硬件,这大致相当于OpenGL 2.0。维基百科的OpenGL文章还指出了哪些硬件最初支持哪些版本。

如果您使用像GLEWGLEE这样的库或任何依赖于它们或提供类似功能的工具包(例如SFML,甚至自4.3以来的Allegro),那么您无需担心你自己的代码是否会编译。这些工具包将负责启用扩展的详细信息并提供您需要的所有符号。

鉴于所有这些,我建议定位OpenGL 2.1,以便通过最佳功能支持获得最广泛的受众。

答案 1 :(得分:3)

您的安全赌注是OpenGL 2.1,但它需要得到目标系统上的驱动程序的支持。在几个移动平台上使用的OpenGL ES基本上是一个简化的OpenGL 2,所以即使移植到那些也相当容易。我强烈推荐使用libGlew,因为VJo说。

答案 2 :(得分:2)

它不是关于操作系统,而是关于视频卡驱动程序的更多信息。

我认为1.4是所有消费者图形系统都支持的最高版本:ATI(AMD),nVidia和Intel IGP。英特尔绝对是限制因素,即使ATI或nVidia没有硬件支持,他们也会发布使用软件来模拟缺失功能的OpenGL 4.1驱动程序。英特尔不是这样。

答案 3 :(得分:1)

OpenGL不是您经常编译和运送的库(除非您是Linux经销商并且正在打包X.Org/Mesa)。你的程序只是动态链接libGL.so(Linux / BSD),opengl32.dll(Windows,64位系统,它也是calles opengl32.dll,但它实际上是64位DLL)或OpenGL Framework(MacOS X) 。这使您的程序可以访问系统的OpenGL安装。您要使用的版本/配置文件对您链接的库没有影响!

然后在您的程序初始化之后,您可以测试哪个OpenGL版本可用。如果你想使用OpenGL-3或4,你必须在Windows中跳出一些额外的箍来充分利用它,但通常某种包装可以帮助你创建上下文,只需将它煮沸到几行

然后在程序中,您可以为各种版本实现多个代码路径。通常较低的OpenGL verion代码路径与较高版本的代码路径共享一个较大的子集。我建议在可用的最高版本中编写新代码,然后为较低版本添加额外的代码路径(通常只是可以由C预处理器宏或类似代码完成替换),直到达到您真正需要的功能的最小公分母。

答案 4 :(得分:0)

然后你需要使用OpenGL 1.1,并通过使用wglGetProcAddress(在windows上)或glXGetProcAddress(在linux上)使用所需(和支持)的函数。

您可以使用GLEW library代替使用这两个功能,它可以为您完成并且是跨平台的。