我应该针对哪种版本的OpenGL / Direct3D实现最佳兼容性?

时间:2010-02-16 06:28:18

标签: api opengl graphics 3d directx

当我们开发网页时,我们可以根据market share广泛制定支持哪些浏览器。

当我们在.NET中开发时,我们可以基于which Windows versions have it installed广泛地计算出要开发的.NET版本。

但是在开发OpenGL或Direct3D应用程序时,我们如何知道哪些人(我的意思是“人”而不是“硬核游戏玩家”或“使用CAD的公司”:P)正在使用?有关于此类事情的统计数据吗?是否有一些人们用来确定支持哪个版本的常用逻辑?正如大多数公司已经支持(可能until just recently)网页中的IE6最低限度,是否普遍认为支持最低限度的OpenGL 1.5或DirectX 8等?

我注意到我们可以找到这些API的which specific video cards support which versions,但我们如何知道人们实际使用的是哪种显卡,是否有任何类型的研究?

N.B。我对OpenGL更感兴趣,因为我正在使用它,但我提到Direct3D,因为我认为同样的问题适用。

3 个答案:

答案 0 :(得分:7)

3D硬件的市场碎片一直是个大问题。没有简单的答案。

您需要定义您的用途。这是一款以休闲为导向的游戏,您打算向多年未更新电脑的人销售吗?这是一个针对工作站级硬件的业务应用程序吗?你是在寻找一个普通的中间游戏买家吗?这比像你想要卖给那些根本不购买游戏的人的屏幕保护程序这样的游戏更简单吗?你需要支持笔记本电脑吗?上网本?

OpenGL的市场碎片比使用DirectX要严重得多。 Khronos集团的官方标准要求都很好。但硬件供应商往往很难更新其驱动程序以符合标准。 GL规范要求许多功能,但只能在商业软件中绝对无法使用的回退软件路径中实现。新的OpenGL 3.1规范试图通过删除对大多数旧的,支持不足的功能的支持来改善这种情况。但如果你需要支持超过两年的硬件(或大多数现代英特尔集成GPU),那么GL 3.1的目标就是太高了。

在游戏购买者中开始一般硬件使用的一个好地方是Steam硬件调查(http://store.steampowered.com/hwsurvey)。 Steam是最受欢迎的数字游戏发行服务,涵盖从休闲到核心的各种游戏。他们会定期重置数字以使其保持最新状态。去年他们报告说他们有2500万活跃用户,所以样本人口非常好。

因此,您可能需要更多地缩小目标客户群。我建议选择一些您认为与您的客户群类似的最新竞争应用程序,并将目标硬件基于他们所需的内容。

答案 1 :(得分:6)

OpenGL 2.1 是一个不错的选择。较新的OpenGL 3不提供更多功能。无论如何,你必须检查所有OpenGL扩展的可用性,所以你坚持使用2.1不会失去太多。

对于DirectX:使用 DirectX 9c 。这是仍在WindowsXP上运行的最新版本。司机稳定且非常成熟。 DirectX 10提供了更多功能,但您将锁定仍运行WindowsXP的用户群。

关于非游戏玩家的兼容性:不支持这些API的图形卡(至少达到可用程度)已经在五年多前消失了。鉴于PC的典型生命周期,您几乎可以肯定没有人会遇到问题。

如果有任何用户抱怨该软件没有在他10岁的matrox-parhelia卡上运行,那么他应该购买他能买到的最便宜的显卡。它将运行得更快,并且将花费一小部分软件。

答案 2 :(得分:0)

这取决于DirectX端项目的时间范围。

如果要在几个月内完成项目,请遵循Nils的建议。 如果时间超过一年,我会重新考虑限制DirectX9,因为XP机器的时间越来越少。 DirectX11是一个好主意,特别是具有retrocompatibility直到功能级别9.0。