C++ DirectX SDK与Windows SDK:使用哪一种?

C++ DirectX SDK与Windows SDK:使用哪一种?,c++,windows-8,directx,C++,Windows 8,Directx,我有一个基于DirectX 10的旧游戏引擎(某种程度上),我一直计划将其移动到DX 11。我还刚刚安装了Windows 8和VS 2013,在尝试运行这个旧项目时,我了解到了这一点,现在被Windows 8 SDK取代。在这种情况下,我想知道更新到DX 11是否有意义,还是应该尝试让我的引擎使用新的Windows 8 SDK。在我做出决定之前,有几件事我想知道: 1) Windows 8 SDK是现在需要学习的东西还是DX 11仍然相关?比如,如果你想学习C++,你应该学习C++ 11,所以如

我有一个基于DirectX 10的旧游戏引擎(某种程度上),我一直计划将其移动到DX 11。我还刚刚安装了Windows 8和VS 2013,在尝试运行这个旧项目时,我了解到了这一点,现在被Windows 8 SDK取代。在这种情况下,我想知道更新到DX 11是否有意义,还是应该尝试让我的引擎使用新的Windows 8 SDK。在我做出决定之前,有几件事我想知道:

1) Windows 8 SDK是现在需要学习的东西还是DX 11仍然相关?比如,如果你想学习C++,你应该学习C++ 11,所以如果你现在想学习Direct3D,你应该学习Windows 8 SDK? 2) 学习DirectX SDK有很多很好的资源:有很多教程,微软自己的,等等。目前有没有类似质量的资料可用于Windows 8的Direct3D或msdn

3) 我的基于Windows 8 SDK的引擎是否仅在Windows 8上运行

4) 这两者之间有没有直接的经验/比较


非常感谢

从Windows 8开始,DirectX SDK是Windows SDK的一部分

DirectX SDK(2010年6月)作为独立DirectX SDK的最新版本仍然可用

看看这篇文章:

1) Windows 8 SDK是现在需要学习的东西还是DX 11仍然相关

具体发生了什么:他们弃用了独立DirectX SDK中的一些东西,对其进行了一些剥离,并将其合并到Windows SDK中。还重命名了一些标题。这就是一切。没什么可学的

事实上,你必须忘记一些事情。值得注意的是D3DX、Effect framework等。由于它们是从新SDK中剥离出来的,因此您需要找到替代的lib来替换它们(例如,Effect11源代码可用;对于位图加载,使用DirectXTK或FreeImage;对于网格,使用Assimp;查找或推出您自己的sprite和字体引擎等)

好的,需要说的是,他们添加了DirectX 11.1(Win8)和11.2(Win8.1)。但是,它们的特点太小,太具体,不能说你必须学习它

2) 学习DirectX SDK有很多很好的资源[…]Windows有没有类似的优质资料 现在是Direct3D还是msdn

有一个新的示例,例如Windows应用商店应用程序示例。它们都与其他(非DirectX)Windows SDK示例相混淆,所以请使用搜索。由于API本身保持不变,桌面应用程序并没有什么真正的新功能。通过替换不推荐使用的内容,您可以轻松地调整旧示例,以在不使用独立DirectX SDK的情况下进行构建

3) 我的基于Windows 8 SDK的引擎是否仅在Windows 8上运行

不,有了这个SDK,你可以瞄准任何从WindowsXP开始的东西。但如果你移植到DirectX 11 API,这意味着你的应用程序至少需要Vista SP2。您可以在没有SP目标的情况下为Vista保留DirectX 10代码。要在Win XP下运行,您需要DirectX 9代码路径。当然,在所有情况下都可以使用OpenGL;)

4) 这两者之间有没有直接的经验/比较

嗯,微软的弃用风格和毫无收获地四处移动有时是令人沮丧的。但我们已经习惯了

从DirectX 10到DirectX 11 API的移植非常简单。但是移植诸如D3DX之类的扩展是一件痛苦的事情:看看我的答案,寻找一些有用的链接

我个人的观点是,你不能依赖微软的二级libs,因为它们可能会在最糟糕的时刻被弃用和削减。但你的解决方案是不可能的。所以,若你们有基于FreeImage或你们自己的库的纹理加载器,你们有一个指向位图数据的指针,并且可以在任何地方使用它:DirectX,OpenGL,直接将它导入窗口,不管你们想要什么。如果您有自己的着色器效果引擎,您将永远不会遇到无法在Windows应用商店应用程序中使用自己的效果框架的麻烦

我倾向于只使用MicrosoftAnywhere的核心API和通用的、可移植的第三方LIB来做任何事情:这减少了耦合和对决策的依赖,并提供了更多的自由。因此,如果一个库被破坏,我不需要重写所有库