DirectX/C++ 3D 引擎编程:现在学习,还是等待 DirectX 12?

DirectX/C++ 3D Engine programming: Learn now, or wait for DirectX 12?

我是一个相对还算不错的程序员,但到目前为止,我主要关注的是使用 C# 进行应用程序开发。我在游戏开发和 3d 引擎方面的经验几乎为零——我已经开始阅读 3d 引擎的一般工作原理,例如有一个很棒的指南解释了如何在 C# 中开发一个非常简单的基于软件的 3D 引擎。非常有帮助,但这几乎总结了我对该主题的全部经验。 此外,到目前为止,我并没有真正使用 C++(尽管我知道与 C# 的基本概念差异,并且会考虑在该语言中至少达到 "sufficient" 可管理的速度)。

所以无论如何,出于纯粹的个人兴趣,我想尝试开发 - 或者更确切地说,学习如何开发 - 用于教育目的的简单的基于 DirectX 的 3d 图形引擎。 我只是对图形部分感兴趣(没有 sound/animation/game states/networking 或其他任何内容,只有非常基本的输入)。渲染一些简单的几何图形,然后逐步学习如何使用更现代的着色技术对其进行扩展就可以了。

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

我不确定其中有多少是已知的,或者是否有以前的开发人员可用于更广泛的 public。但是,如果已经可以说的话:你们会建议我等待 DX12,还是从 v11 开始,因为将来的开发会非常相似?

郑重声明,我当然知道学习 DX11 无论如何都没有坏处。但我并不着急,如果我现在学习的一半在几个月后变得过时,我宁愿等到那时再慢慢开始。

如果您切换到版本 12,您将使用 DirectX 11 学到的大部分内容都将适用。

事实上,出于您的目的,您可能永远不需要切换。 DirectX 12 本质上是以易用性换取 CPU 性能。它还需要 Windows 10,因此它要被广泛使用还需要几个月的时间。

DirectX 9 尽管年代久远,但仍广泛用于制作游戏。不过,如果您是从头开始,我不会推荐它。

哦,不管你做什么,都不要选择 DirectX 10。DirectX 11 可以在相同的显卡和操作系统上做同样的事情。

将 DX12 想象成“没有辅助轮、没有刹车的 DirectX,目前可能还没有轮胎”。

DirectX 12 拥有丰富的教程、支持库、最佳实践、rock-solid 驱动程序以及在操作系统中广泛部署的支持 'few months' end-users机器。它现在是“前沿”,最适合当今积极致力于标题和引擎的 GPU 图形编程专家使用,他们希望确保一切正常。

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

我能说的是学习使用 legacy DirectX SDK stuff like D3DX is a dead-end for DX12. Focus instead on DirectX 11 using 'modern' helpers like DirectX Tool Kit and DirectXMath for C++ 编写 DirectX 11 程序。

更新: DirectX Tool Kit for DirectX 12 is now available along with some tutorials。也就是说,最好先学习 Direct3D 11,因为 Direct3D 12 是专为图形专家设计的 API,对新手来说相当苛刻。知道如何使用 DirectX Tool Kit for DX11 如果您想走那条路,自然会映射到 DirectX 12 版本。