我有一个基于DirectX 10的旧游戏引擎(有点像),我一直计划将其转移到DX 11.我刚刚安装了Windows 8和VS 2013,并且在尝试运行这个旧项目时我学到了那 DirectX SDK已被弃用 现在由Windows 8 SDK取代。在这种情况下,我想知道更新到DX 11是否有意义,或者我应该尝试让我的引擎使用新的Windows 8 SDK。在做出决定之前,我想知道几件事:
1)Windows 8 SDK现在要学习还是DX 11仍然相关?比如,如果你想学习C ++,你应该学习C ++ 11,所以如果你现在想学习Direct3D,你应该学习Windows 8 SDK吗?
2)学习DirectX SDK有很多很好的资源:很多教程,微软自己的 样本, NVidia Graphics SDK示例, AMD Radeon SDK示例 有没有类似的优质材料适用于Windows 8的Direct3D或者只是msdn?
3)基于Windows 8 SDK的引擎是否只能在Windows 8上运行?
4)两者之间的任何第一手经验/比较?
非常感谢!
1)Windows 8 SDK现在要学习还是DX 11仍然相关?
究竟发生了什么:他们从独立的DirectX SDK中弃用了一些东西,将其剥离并合并到Windows SDK中。还重命名了一些标题。这一切。没什么好学的。
实际上你必须忘记(即忘记)某些事情。特别是D3DX,效果框架等。当它们从新的SDK中剥离时,你需要找到替代它们的替代库(例如,Effect11源可用;对于位图加载使用DirectXTK或FreeImage;对于网格使用Assimp; find或推出自己的精灵和字体引擎等)。
好的,需要说的是,他们已经添加了DirectX 11.1(Win8)和11.2(Win8.1)。但是,他们的功能太小而且非常具体,可以说你 必须 学习它。
2)学习DirectX SDK有很多很好的资源[...]是否有适用于Windows的类似优质资料
8的Direct3D还是仅仅是msdn?
有一个新的 MSDN上的一组示例,例如Windows应用商店应用示例。它们都与其他(非DirectX)Windows SDK示例混淆,因此请使用搜索。由于API本身保持不变,桌面应用程序并没有什么新东西。通过替换已弃用的东西,您可以轻松地修改旧样本,而无需使用独立的DirectX SDK。
3)基于Windows 8 SDK的引擎是否只能在Windows 8上运行?
不,使用此SDK,您可以定位到从Windows XP开始的任何内容。但是,移植到DirectX 11 API,这意味着您的应用程序至少需要Vista SP2。您可以保留没有SP目标的Vista的DirectX 10代码。要在Win XP下运行,您将需要DirectX 9代码路径。或者在所有情况下都是OpenGL;)
4)两者之间的任何第一手经验/比较?
好吧,微软的弃用风格和移动的东西没有收获有时令人沮丧。但我们已经习惯了。
从DirectX 10移植到DirectX 11 API是 真的很直白。但移植扩展的东西,比如D3DX很痛苦:看看我的答案 这里 一些有用的链接。
我个人认为,你不能依赖微软的二级库,因为它们可能会在最糟糕的时刻被弃用和削减。但你的解决方案他们不会。因此,如果你有基于FreeImage或你自己的lib的纹理加载器,你有一个指向位图数据的指针,可以在任何地方使用它:DirectX,OpenGL,直接将它blit到窗口,无论你想要什么。如果你有自己的着色器效果引擎,那么在Windows应用商店应用中使用自己的效果框架就不会遇到麻烦。
我倾向于只在任何地方使用Microsoft的核心API以及用于其他任何事情的通用,可移植的第三方库:这减少了对一个人的决策的耦合和依赖,并提供了更多的自由。因此,如果一个lib被破坏,我不需要重写所有这些。
从Windows 8开始,DirectX SDK作为Windows SDK的一部分包含在内。
DirectX SDK(2010年6月)仍然可用作独立DirectX SDK的最新版本。
看看这篇文章: 哪里是DirectX SDK