2015-04-18 85 views
2

我是一个相对好的程序员,但我的主要焦点是迄今为止使用C#进行应用程序开发。我几乎没有游戏开发和3D引擎的经验 - 我已经开始阅读关于3D引擎如何在一般情况下工作的例子,例如有一篇精彩的指南解释了如何在C#中开发一个非常简单的基于软件的3D引擎。非常有帮助,但是这几乎总结了我对该主题的整体体验。另外,到目前为止,我还没有真正使用过C++(尽管我知道C#的基本概念差异,并且会考虑在该语言中至少达到“足够”的速度)。DirectX/C++ 3D引擎编程:立即了解还是等待DirectX 12?

因此,无论如何,出于纯粹的个人兴趣,我愿意为了教育目的而开发 - 或者说,学习如何开发 - 简单的基于DirectX的3D图形引擎。 我只对图形部分感兴趣(没有声音/动画/游戏状态/网络或其他,只有非常基本的输入)。渲染一些简单的几何图形,然后逐步学习如何用更现代的着色技术来扩展它,那就没问题了。

我已经找到了一些很好的资源。但在深入研究这个主题之前:我知道DirectX12即将发布,并且看到它的发展似乎有多大,我真的不确定是否会对API进行很多重大更改。或者换句话说:恐怕我现在开始学习DirectX 11的东西,从现在开始的几个月内,它们将毫无用处,因为从编程的角度来看,DirectX 12的工作方式截然不同。

我不确定这个数字已经知道了多少,或者是否有开发者以前可以向更广泛的公众提供。但是如果可能已经说过了:你们会推荐我等待DX12,还是从v11开始,因为将来发展将会非常相似?

为了记录,我知道当然学习DX11不会伤害任何情况。但我并不急于求成,如果我现在学习的一半现在已经过了几个月就过时了,我宁愿等到那时才慢慢开始。

回答

7

把DX12想象成“没有训练轮,没有刹车,现在可能没有轮胎的DirectX”。

对于DirectX 12来说,拥有丰富的教程,支持库,最佳实践,坚如磐石的驱动程序,以及在最终用户机器上的操作系统中广泛部署的支持将会超过几个月。它现在是“流血边缘”,并且最好由GPU图形编程专家使用,积极致力于当今想要确保一切正常的标题和引擎。

对于其他人,至少在未来一年左右学习DirectX 11,并可能更长的时间取决于您的应用程序的需求,您的个人技能水平以及您在此期间尝试学习的重点。

我能说的是,学习使用legacy DirectX SDK东西一样D3DX编程的DirectX 11是一个死胡同的DX12。使用“现代”帮助程序(如DirectX Tool KitDirectXMath)专注于C++。

UPDATE:DirectX Tool Kit for DirectX 12现提供一些tutorials一起。也就是说,最好首先学习Direct3D 11,因为Direct3D 12是一个专为图形专家设计的API,对于新手来说是相当无情的。

1

大多数时候,你将学习使用的DirectX 11,如果你切换到版本12

事实上,你的目的将是适用的,你可能不会永远需要切换。从本质上说,DirectX 12的CPU性能易于使用。它还需要Windows 10,所以在它被广泛使用之前要超过几个月。

DirectX 9仍然广泛用于制作游戏,尽管它的年龄。如果你从头开始,我不会推荐它。

哦,无论你做什么,都不要选择DirectX 10. DirectX 11可以在相同的显卡和操作系统上完成所有相同的工作。

+2

的DirectX 9仍然支持三个方面的原因:(一)codepaths已经写了许多发动机和现有的工具,(B)的Xbox 360是的Direct3D 9,虽然它有如此多的扩展,可能是不完全正确的,但它一直处于“ DirectX 9时代设计'活着很长时间,(c)对于专门针对中国或俄罗斯的人来说,你的目标确实是Windows XP。现代Windows平台这就是说,调试和工具支持或Direct3D的9缺乏支持DirectX 9,是越来越多的模仿,而不是在任何意义上是“直接” –

+2

DX11是当前的“甜蜜点”学习的DirectX,并适用到所有受支持的Microsoft平台:Windows Vista SP2 + KB971644或更高版本支持用于Windows桌面应用程序的DX11,并且这是Windows 8.x Store,Xbox One,Windows Phone 8和用于Windows 10的通用Windows应用程序的最低要求。工具支持是很好的,你可以找到很多[遗留D3DX的东西]的替代品(http://blogs.msdn.com/b/chuckw/archive/2013/08/21/living-without-d3dx.aspx)支持DX11。支持库,甚至对DX12的正确使用模式的理解仍在开发中。 –

+0

使用DirectX 9还有另一个原因 - 如果您需要支持旧的D3D9显卡,则可以在DX9上使用Shader model 3(和2a/2b)。 DX 10和11的支持他们,但只支持Shader Model 2 – Adam