使用哪个版本的OpenGL?

时间:2011-07-25 22:53:24

标签: c++ opengl version

我目前运行的机器允许我在OpenGL 2.1中编程。如果我要制作一个程序,我应该使用当前OpenGL版本的强大功能,如3.x / 4.x或使用2.1吗?

关于一个问题:我怎么知道我的电脑可以运行的OpenGL的最高版本是什么?

另一方面问题: 升级我的视频卡是否允许我在升级版的OpenGL中进行编程?

4 个答案:

答案 0 :(得分:35)

OpenGL版本(适用于AMD和NVIDIA GPU)大致对应于硬件级别。 2.x OpenGL版本适用于DX9级硬件。 3.x表示DX10级别,4.x表示DX11级硬件。因此,您选择的版本限制您可以运行您的代码。

一般情况下,任何实际可以从商店购买新产品的AMD或NVIDIA GPU都是3.x或更高(超过4.x)。甚至AMD的集成GPU,主板或CPU也是3.x或更高。我在HD 3300主板GPU上进行了一些家庭开发工作,它运行得相当不错。

英特尔是一个问题。英特尔的OpenGL驱动程序质量非常差。许多旧的Intel机器只能支持GL 1.4,这是DX9之前的功能。它们支持一些更高级别的扩展(着色器,但只有顶点着色器,因为它们在软件中运行它们)。

最新的英特尔GPU更好一些,但他们的GL驱动程序仍然相当错误。

以上描述了Windows的情况。 Linux有点模糊,因为有来自NVIDIA / AMD的驱动程序,以及开源社区编写的驱动程序。后者通常不太好,但它们正在改善。这些往往是3.x级硬件。

MacOSX世界有点不同。 Mac OSX Lion(10.7)最近发布,增加了对OpenGL 3.2的支持(遗憾的是,由于某些原因,不是3.3)。 Apple严格控制OpenGL在其平台上的工作方式,但希望他们比最近更频繁地更新GL版本。

所以在Mac上,你真的有两个选择:2.1或3.2。请注意,Lion的3.2支持仅公开核心 OpenGL功能。有关具体含义的详细信息,请参阅this page

您无法分辨特定计算机的最高版本。您只需创建上下文时获得的版本。一般情况下,除非您特别要求提供版本(即使这样,通常也没有),否则您将获得硬件和驱动程序可以处理的最高版本。

哦,是的:OpenGL版本由您的视频卡功能(和已安装的驱动程序)控制。

以下建议假定您正在开发一个您打算让其他人使用的严肃应用程序。这不适用于小型演示应用程序或其他任何内容。

一般来说,我建议不要明确地将代码限制为4.x.虽然4.x的采用率每天都在增加(NVIDIA和AMD共有2代硬件,支持4.x,而AMD可能会在几年内推出三分硬件。此外,AMD也开始采用4.x功能的GPU在他们的CPU中),仍然有很多3.x硬件。 4.x并没有给你带来太大的收获,你可以轻松地添加代码路径以有条件地支持4.x功能(如果有的话)。

答案 1 :(得分:4)

要使用OpenGL 3.x,您需要一张支持DirectX10的卡以及支持它的适当驱动程序。 与DirectX相反的优点是,您还可以在WindowsXP上使用OpenGL3和4。不需要7或Vista。 您应该使用哪个版本取决于您的受众。如果您的观众是游戏玩家,请继续使用3.不会做4独家。 DX11仍然很少见。 首先看看游戏玩家如何使用他们的计算机以及他们拥有的硬件,蒸汽是一个很好的来源:

http://store.steampowered.com/hwsurvey

您可以通过运行来确定版本:

glGetString(GL_VERSION);

一个很好的OpenGL3教程:

http://arcsynthesis.org/gltut/

OpenGL 3.3 SDK参考:

http://www.opengl.org/sdk/docs/man3/

希望这有点帮助:)。

答案 2 :(得分:3)

许多嵌入式英特尔显卡仅限于1.4或1.5。

我听说Mac OSX卡在2.1上。

所有Radeon和GeForce显卡都可以使用3+(可能需要更新驱动程序)。

您可以使用任何版本进行编程,但如果您的硬件不支持,您最终将在软件渲染器下进行测试(慢!)。

答案 3 :(得分:0)

  

关于一个问题:我怎么知道我的电脑可以运行的OpenGL的最高版本是什么?

我回答上述问题。 我遇到了下面的工具,它本身就是完整的,让我看看我的系统目前支持的所有OpenGL版本(从1.0到实际支持)。以及可供我的系统使用的扩展。不仅对于ARB,它还包括NV,ATI,OES等。

http://www.realtech-vr.com/glview/download.html