我有一个基于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 Store Apps样本.它们都与其他(非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被破坏,我不需要重写所有这些.