我应该学习Direct3D 9、10或11吗?[关闭]


14

我刚刚开始使用Direct3D进行3D编程。我应该选择哪个版本的D3D?

11看起来很整洁,但9和10看起来仍然很漂亮。考虑到游戏开发行业的当前状况,开始使用哪个版本更有意义?


“使用哪种技术”问题不是好的问答问题。
MichaelHouse

Answers:


12

这取决于您是否要设计引擎来制作要在三年,一年或六个月内完成的游戏,以及是否要考虑控制台端口。从Direct3D9中丢弃游戏的360端口相对容易,但是您需要做更多的工作,这些源自D3D11。请记住,D3D11会锁定所有XP用户,即使不一定是所有D3D9硬件。

最新的Steam调查表明,约有16%的人仍在使用Windows XP。你能承受得住吗?到游戏完成时,情况将如何改变?您是否要使用依赖于更高级别API的功能?这些是您需要回答自己的问题。

Direct3D 9非常易于访问,您可以通过D3D9游戏接触到很多人,但是现在已经很多了,尤其是在PC上。如果您不希望针对那些人,那么就没有什么意义了。

哦,不要理会DX10。完全没有理由在DX11上使用它。除非您想使用D2D / DirectWrite,否则这并非不合理。

当然,值得一提的是,在DX11中,没有什么替代类的,作为业余爱好者,我在DX9中发现了非常有用的类。例如ID3DXMesh,ID3DXSprite,ID3DXFont,必须从源代码编译ID3DXEffect等。Microsoft建议使用DirectWrite代替ID3DXFont,但是,他们当然忘记了使DX11与新的Direct2D / DirectWrite系统兼容,在我看来这是愚蠢的。 。


他们为什么要删除效果框架?这是一个非常有用的IMO类。
dotminic 2011年

@__dominic:不会删除它,但是您必须自己编译它。
DeadMG

1
@__dominic:正如DeadMG所指出的那样,效果框架并未删除,而是将其分解为一组可以自己编译的独立代码文件-据称这样做是为了使其比D3D内核更流畅地进行版本控制,并且缓解部署问题(尤其是围绕D3DX)。

1
我认为比删除25%的XP用户更糟糕的是,只有17%的用户拥有DX11 GPU(截至目前)。
DMan 2011年

2
@DMan:D3D11可以在较低级别的硬件(包括D3D9硬件)上运行。
DeadMG '02

9

tldr:学习D3D11。

就API的形状而言,10和11之间的差异很小。D3D11允许您使用降级功能来针对D3D11 API编写代码,该API会一直运行到D3D9类硬件(请注意,您仍然需要Vista或更高版本)。因此,您最好还是学习较新的API,无论如何我觉得它更干净,更统一。

但是,如果您没有Vista或更高版本,或者最终希望自己的代码在XP上运行(例如,将游戏分发给XP用户),则必须使用D3D9。XP市场可能正在萎缩,所以我想说11。


3

如果您完全不熟悉3D编程,尤其是如果您不熟悉COM和Windows编程,那么我强烈建议您不要学习DirectX。以我的经验,DirectX是一个非常强大的工具,但是它具有非常陡峭的学习曲线,除了Windows编程,3D编程和许多其他学习曲线之外,您还必须考虑它。如果您从DirectX开始,那么制作样板代码的所有细节可能会让您不知所措,因此我建议您不要这样做。

相反,我建议使用一个更简单的API,该API可让您更加专注于学习3D编程。XNA非常好,而且由于它位于DirectX之上,一旦您转向DirectX,您将拥有一些想法,这些想法将使DirectX学习曲线更容易掌握。

现在,如果您具有3D编程(例如OpenGL)的经验,并且知道如何进行COM编程,那么我建议您使用DirectX11。除了最新版本以外,其他任何东西都将被淘汰,您从中获得的任何经验将对时间较短。

但是话又说回来,真正的经验来自多种多样,所以我建议您同时学习DirectX和OpenGL,并根据需要学习XNA,并学习尽可能多的API。这样,您将具有3D编程如何与不同工具一起使用的抽象知识,并且将能够为每个工作使用正确的工具。


2

我推荐DX11或DX10。差别很小。您可以使用DX11做更多的事情(硬件消息传递,更好的gpgpu,输出到像素着色器上的多个纹理..)。DirectX 9具有另一种体系结构,目前几乎已经过时。如果您正在询问当前的游戏开发者行业:DX9已死于当前开发的PC游戏。

但是我不得不说:
不要在意api,一旦您真正了解了图形的工作原理,学习新的api最多需要一个月的时间。时间更短。


3
DX9并不过时。XP上仍有大量潜在用户。它可能不再处于开发中,并且在接下来的几年中将变得过时,但现在不是。
共产主义鸭子

1
@thecommunistduck我同意,但是DX9在学习它方面已经完全过时了。因为一旦现在开始学习它的初学者,就会很好地了解它……它将过时了。并确保我在回答中告诉了我不好。
Notabene 2011年

-5

我听说带有win xp系统的dx9是基于单核的系统。这是旧技术。我建议你dx11。


3
这个答案不会增加任何生产力,也不清楚(对于潜在的错误和误导)您对“单核系统”的建议。

1
另外,“我听说...”不是可靠的证据来源(实际上是几乎任何东西)。
Maximus Minimus 2013年
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.