我目前使用一台机器,可以让我在OpenGL 2.1中进行编程。如果我要制作一个程序,我应该使用当前的OpenGL版本,例如3.x/4.x还是使用2.1?
另外一个问题:我如何知道我的计算机可以运行的最高版本的OpenGL?
另一个问题:仅仅升级显卡是否允许我编写升级版的OpenGL程序?
我目前使用一台机器,可以让我在OpenGL 2.1中进行编程。如果我要制作一个程序,我应该使用当前的OpenGL版本,例如3.x/4.x还是使用2.1?
另外一个问题:我如何知道我的计算机可以运行的最高版本的OpenGL?
另一个问题:仅仅升级显卡是否允许我编写升级版的OpenGL程序?
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上进行一些家庭开发工作,效果还不错。
Intel则有问题。Intel的OpenGL驱动程序质量相当差。许多旧的Intel机器只能支持GL 1.4,这是DX9级别之前的功能。它们支持一些较高级别的扩展(着色器,但只有顶点着色器,因为它们在软件中运行)。
更近期的Intel GPU要好一些,但它们的GL驱动程序仍然相当有漏洞。
以上描述了Windows的情况。Linux有些模糊,因为有来自NVIDIA / AMD的驱动程序和社区编写的开源驱动程序。后者通常不太好,但正在改进。这些通常适用于3.x级别的硬件。
MacOSX世界有些不同。最近发布的Mac OSX Lion(10.7)增加了对OpenGL 3.2的支持(可悲的是,不是3.3,由于某种原因)。苹果公司严格控制OpenGL在其平台上的工作方式,但希望他们将更频繁地更新GL版本。
因此,在Mac上,您真的只有两个选择:2.1或3.2。请注意,Lion的3.2支持仅暴露了核心OpenGL功能。有关此内容的详细信息,请参见此页面。
您无法确定您特定计算机的最高版本能力。实际上仅有你创建一个上下文时所获得的版本。通常情况下,除非您明确请求版本(即使这样,通常也不会),否则将获得硬件和驱动程序可以处理的最高版本。
哦,对了:OpenGL版本受你的显卡能力(和安装的驱动程序)控制。
以下建议假设你正在开发一个你打算让别人使用的严肃应用程序。这不是针对小型演示应用程序或其他任何内容。
总的来说,我建议不要明确地限制你的代码为4.x版。虽然4.x版的采用率每天都在增加(NVIDIA和AMD均有2代硬件支持4.x版,并且第三代可能会在今年年底从AMD发布。此外,AMD现在开始嵌入4.x版GPU到他们的CPU中),但仍然存在许多3.x版硬件。4.x版并没有为您带来太多好处,如果可用,您可以轻松添加代码路径以有条件地支持4.x版功能。
http://store.steampowered.com/hwsurvey
您可以通过运行以下命令确定版本:
glGetString(GL_VERSION);