给定兼容性和性能考虑,我应该为哪个版本的OpenGL编码?[关闭]


19

更新OpenGL规范后,它们只会添加功能。因此,从理论上讲,支持Core和Compatibility配置文件的最新最好的硬件应该可以很好地运行超老的OpenGL1.1代码。事实证明这是事实。我花了12个月的时间学习OpenGL1.1,并且对它有了一个相当的了解。

我阅读了其中一些花哨的新OpenGL4.2书的一些章节。我所依赖的几乎所有功能都已弃用(例如“显示列表”),这使我认为可以采用更好的方法来完成所有这些操作。

让我们考虑一下,所有现代硬件都可能完全支持1.1。1.1发布于1992年。我不是编码硬盘的方式只是支持20岁的电脑。:-p我认为,假设大多数游戏者所运行的硬件都达到5年左右的中端水平,这是合理的。

我认为,较新的方法被设计为普遍成为以下两种情况之一:更好的性能或更易于编写代码。我读过某个地方,但从来没有!XD

大约5岁以下的硬件最广泛地支持哪种版本的OpenGL?考虑到这些考虑因素,最适合使用哪个版本?

Answers:


19

考虑到您的考虑,然后我跳过去查看每个版本的OpenGL规范何时发布,并从我所看到的内容中综合了一些整体见解。

引入了FBO,VAO和其他功能的OpenGL 3于5年前于2008年7月11日发布。当然,您不能期望该日期之后的所有卡都立即提供OpenGL 3。

查看Steam硬件调查,其中40%是DirectX10。由于OpenGL 3需要类似的图形卡,因此通常可以假定大多数DirectX 10卡至少可以运行OpenGL 3。

一直到GeForce 8xxx系列的显卡都支持OpenGL 3,如果我没记错的话,它们很受欢迎。还需要注意的有趣一点是,Intel HD 2000和3000 Graphics(Sandy bridge)最多仅支持OpenGL 3,因此,如果您打算针对这些目标,请记住这一点。

结论:OpenGL 3是一个很好的选择(还要记住,大多数游戏玩家可能会根据目标受众而拥有比一般硬件更好的硬件)。


这是一个很好的答案。正是我所寻找的那种见识。
Suds 2012年

3
“还要注意的是,英特尔HD 2000和3000图形卡(桑迪桥)最多仅支持OpenGL 3”。注意:它们仅支持GL 3.1(因为英特尔不在乎)。而且由于它是英特尔,因此“支持”应该含盐。他们的硬件可以支持3.3,但是他们不公开(因为再次,他们不在乎)。我会完全避免在英特尔硬件上使用OpenGL3.x。确实,我会避免做任何基于英特尔硬件的着色器。
Nicol Bolas 2012年

然后提出了问题。英特尔硬件市场的饱和程度如何?还是不应该关心intel图形和使用OpenGL3.x?还是那里有足够的英特尔图形硬件真正重要?
Suds 2012年

1
一个问题是OSX。最新版本10.7.x仅支持OpenGL 3.2,10.6.x仅支持 3.0(甚至可能是2.x)。10.5.x随卡而变化很大,可能有1.3、1.5和2.0。这些系统将永远停留在那些OpenGL版本上,除非用户向Apple付费以进行更新。没有视频卡驱动程序更新或OSX会更新OpenGL的更新。其他问题是上网本中使用的某些嵌入式英特尔芯片组。其中许多仅是OpenGL 2.0或更糟的版本。
David C. Bishop

然后您有了3DS,它仍在摇摆OpenGL 1.1 ...
kirbyfan64sos

8

我将从这里开始:http : //store.steampowered.com/hwsurvey

我不会将时间段定位为一定比例的用户,例如,如果您定位4cpus,则只会达到45%的用户,但是如果工作至2,则将接近90%


1
您在哪里看到OpenGL?我只看到DirectX(如果您仅打算将Windows作为目标,则需要注意一些有趣的东西)。
DMan 2012年

我想您是根据显卡故障进行的工作
Jimmy

是的-我没有看到关于OpenGL的任何内容-但是您可以从卡模型中获得它,或者的确,我相信DirectX版本与OpenGL之间会有相当多的相关性。
鲑鱼驼鹿2012年

3

答案取决于您是否需要或要在提到的时间范围内发布的Intel图形上运行。

如果这样做,则将自己限制为OpenGL 2.1(甚至1.5),如果不这样做,则3.x似乎是合理的。

是的,旧版本的OpenGL仍然可以运行,是的,从一个角度看,它们似乎更简单。事情变得不正常的地方是当您尝试做(而且您会做)它们不太容易支持的事情时。OpenGL 1.1不仅是困难的方法-如果要获得某些结果,这通常是不可能的方法。


我想到我应该添加一个示例,说明为什么1.1常常是不可能的。可以很容易地与1.1功能相关的一种是多次混合遍历。因为您没有FBO,而且每个组件纹理最多只能使用8位,所以您会发现随着混合传递的堆积,您将开始失去精度。使用3/4/5遍,最终结果将开始看起来像(或更差于)16位或8位图形。然而,使用1.1功能集通常需要多次通过来模拟更高级别的效果(基本的多重纹理是我们都熟悉的效果)。
Maximus Minimus

甚至Intel HD图形(Sandy / Ivy Bridge)也仅支持OpenGL 3.1,并且已经使用了一年。这取决于您是否要支持廉价(或低功耗)笔记本电脑。
史蒂夫·霍华德

2
@SteveHoward:英特尔高清图形可以支持OpenGL 4.
Janus Troelsen

那篇文章距我发表评论大约3个月了。
史蒂夫·霍华德

1

首先,只要您具有兼容性配置文件(通常是这种情况),诸如显示列表之类的OpenGL 1.1仍然可以在新的上下文中使用。唯一的问题是,如果您希望移植到OpenGL ES,控制台特定的图形库之一(它们通常被剥离为类似于OpenGL ES的OpenGL)甚至是WebGL(无论如何都需要大量的工作)。

我个人建议使用顶点/片段着色器和VBO。它们已经存在了很长一段时间,并提供了出色的性能改进。如果将函数包装在类中,则可能甚至可以提供简单的回退。

您也许还可以模拟诸如“顶点数组对象”之类的东西。


0

拥有5年历史的硬件,有些人仍在使用XP。这意味着您甚至无法使用DirectX 10或OpenGL 3进行编码。而且OpenGL 3具有许多您真正可以从中受益的功能,例如帧缓冲区等。老实说,我会稍微提高您的系统要求,以便您可以包括这些功能。


8
-1:“使用5年之久的硬件,有些人仍在使用XP。这意味着您甚至无法使用DirectX 10或OpenGL 3进行编码。” 不对。OpenGL 3.x 在XP中运行良好。由于API /驱动程序的原因,只有D3D10受XP的限制。它与硬件无关。
Nicol Bolas 2012年

0

3d软件通常同时具有“基准”图形api版本和“最新和最大” api版本的代码路径。

常见的基准图形版本是D3D9和OpenGL 2.1 / GLSL 120 ..两者都明显缺少几何着色器,因为旧的硬件不支持它们。

另一个基准选项是ANGLE,它是在D3D9,桌面OpenGL和移动GLES 2.0上运行的GLES 2.0 plus EGL。它是chrome和Firefox中Google chrome和webgl的后端。

http://code.google.com/p/angleproject/

至于您选择的“最新,最出色”版本,则更具挑战性。您定位的API和硬件越新,可以支持的外观就越好-但只能在最新,最出色的硬件上使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.