我想做一些项目,让我的简历对游戏公司更具吸引力。所以我要开始买书了。但我不知道要开始阅读DirectX 9或10 api书籍。 DirectX10很棒,但似乎行业正在慢慢变为10.所以我应该使用9还是10?
答案 0 :(得分:14)
我建议使用directx9学习基础知识,然后快速转到dx11。 DirectX11比DirectX9更难上手,因为它稍微复杂一些,但D3DX中的许多实用功能已经不再存在,或者已经转移到像效果框架这样的源代码。这不是坏事,但它确实使学习变得更加复杂,因为你必须一次学习更多的东西。
花2或3周学习DX9然后转到DX11进行“真实”工作:P
使用固定管道学习基本DX9,使用d3dx学习加载模型等。它比DX11简单得多,很多更好地记录,你会得到一个三角形,然后在屏幕上得到一个模型快点。一直玩,直到你完全理解基本概念和转变。
但是只能使用着色器重写它。你需要在DX10 / 11中使用它们,但是当你已经拥有一个可用的代码框架时,它会更容易学习,并且在DX9中使用它会更简单。
一旦你有了这个工作,学习DX11。你必须切换数学库。你必须发明自己的模型格式和加载器。您必须创建自己的效果框架或使用示例框架,但是现在您已经了解了3d和编程着色器的基础知识,它们会变得更加容易。
答案 1 :(得分:3)
如果您知道如何在GL,D3D9,D3D10或D3D11中进行3D开发,那么TBH会对OneOfOne发表评论,那么您可以通过一些工作将这些技能转移给其他人。
我个人认为D3D11是你学习前沿的方式。你会发现你可以通过一些工作来完成GL,D3D9或D3D10。在理论上做了足够的工作,你会发现它甚至难以将技能转移到完全软件引擎上。
答案 2 :(得分:2)
如果你的目的是学习你将在游戏行业中使用的技能,那就坚持使用DirectX 9.由于DirectX 10和11都需要Vista或Window 7,游戏开发者仍然大多忽视它们并将DirectX 9作为目标为了获得对Windows XP的支持。
话虽如此,你从哪开始并不重要。差异并不大。如果您了解3D API背后的概念以及GPU管道的工作原理,您可以轻松地选择三个甚至OpenGL中的任何一个。
答案 3 :(得分:1)
事实上,你需要学习两者。
As long as 50% of gamers are still on WinXP,您需要能够在Direct3D9中进行编程。
ID3D11BlendState
结构还是调用IDirect3DDevice9::SetRenderState()
,它都是相同的概念,只是采用不同的方式。
在使用d3d11几天之后,我在很多方面都认为它比DX9更好。首先,您可以使用GPU的全部大写,包括几何着色器。第二,它强迫你完全理解图形管道甚至绘制任何东西(注意函数在它们影响的管道阶段后如何命名:here :( IA*
fcns:input-assembler stage,{ {1}} fcns:输出合并阶段等))。这可能会导致初始启动曲线稍微大一些,但是一旦得到它,它就不会比D3D9更难,而且更好,因为函数的命名有助于概念的坚持。
所以继续这两个方面,并且学习它们串联可能有助于减少从DX9学习弃用API /做事方法所花费的精力(即你真的想花更多时间使用着色器,并没有太多使用DX9的固定功能管道部分)。
答案 4 :(得分:0)
你可以查看Luna的DX9 / DX11书籍(我建议你从11开始)。你可以查看http://www.rastertek.com/tutdx11.html,但他没有解释所有内容,所以你可以进入Luna的书,看看这些功能或属性是什么
答案 5 :(得分:0)
除了一些例外,DX10只是一款免费的DX9。例如,DX9具有用于渲染Flatshaded,Textured或使用着色器的选项。在DX10中,这些选项消失了,你总是需要使用真正的着色器。如果你想做flatshading,写一个做平面着色的HLSL着色器。
所以我建议你学习DX10(或DX11)。您将能够快速采用DX9,但不使用传统功能,具有更现代的编码风格。它们可能会让人感到困惑,因此DX10会把重点放在相关的事情上。
如果你是一个真正的初学者,设置一个顶点缓冲区来创建一个三角形让你感到困惑(作为真正的3D程序员你不再喜欢单个三角形)我甚至建议从OpenGL开始。你将获得更快的成功,但实际上如果你想专注于现代3D编码,这可能会让DX9-Legacy有点分散注意力。
答案 6 :(得分:0)
是的,不要浪费你的时间使用DX10它在任何时期都没有真正被用作行业标准,没有任何足够大的变化来保证人们从DX9升级但是对于DX11而言。
答案 7 :(得分:0)
我建议使用directx 11,我认为没有理由浪费时间去弃用功能或技术。 从一开始就学习着色器会让事情变得更加清晰
答案 8 :(得分:-1)
尝试从9和10的示例文件夹中进行示例,如果您的计算机可以支持它,那么这就是我正在做的事情。