我有 Visual Studio 2012 Express for Desktop 和 Windows 8,我想创建 Direct X 应用程序和游戏。我知道现在有一个 Windows SDK,并且在 VS 2012 exp for win8 中,IDE 预装了 SDK(我从新的 Direct3D 项目中知道这一点)。我的问题是,如果我想为 Windows 桌面(使用 VS2012exp)开发应用程序,它是 Windows SDK 还是我需要安装 Direct X SDK?我怎么知道我的显卡是否支持哪个版本的 Direct X?任何 Direct X SDK 版本都可以与任何 Direct X 版本一起使用吗?如您所见,我是这方面的新手,任何评论都会有所帮助。谢谢你的时间。
2 回答
如果我想为 Windows 桌面(使用 VS2012exp)开发应用程序,它是 Windows SDK 还是我需要安装 Direct X SDK?
是的,使用 Windows 8 SDK和 Visual Studio 2012(或 Windows 8.1 SDK 和 Visual Studio 2013 预览版),您可以开发任何东西:
- DirectX 应用程序(Windows 桌面和 Windows 应用商店)
- 适用于任何受支持的目标平台(x86、x64、ARM)
- 适用于任何相当现代的 Windows 操作系统(从 Windows 2000/XP 开始)
- 使用任何 API 版本:DirectX 9.3、10.0、10.1、11.0 或 11.1
笔记:
- DirectX 9 API 与 10 和 11 完全不同,并且已经过时。仅当您面向 Vista 以下的 Windows 版本时才使用它。
- DirectX 11 更像是 DirectX 10 的改进版本。
- 因此,在大多数情况下,您需要针对 DirectX 11.1 进行编程。
不,您不需要安装 DirectX SDK。它已被弃用(最新版本 - 2010 年 6 月)。不要在新代码中使用它。仅当您需要编译一些使用 D3DX 东西(例如ID3DXEffect, ID3DXFont, ID3DXLine, ID3DXMesh, ID3DXSprite
)的旧代码时才使用它,例如来自书籍的示例或不同的 SDK 示例。
我怎么知道我的显卡是否支持哪个版本的 Direct X?
好吧,如果我们谈论您的视频卡,您可以查看您的卡供应商或 GPU 供应商的网站。或任何信息实用程序,例如GPU-Z。
如果我们谈论最终用户硬件,自 DirectX 10-11 以来就有feature levels
. 因此,即使您使用的是最新的 API(此时为 DirectX 11.1),您也可以针对旧硬件(例如,如果您使用D3D_FEATURE_LEVEL_9_3
较新的功能,fromD3D_FEATURE_LEVEL_10_0
和更高版本将被禁用)。
请注意,要开发最新feature level
版本,您不需要支持它的 GPU。您可以在WARP 设备上运行和调试应用程序(非常慢,仅用于调试目的,不适用于最终用户版本)。例如,您可以拥有旧的 DirectX 10 卡(Shader 模型 4.0),但目标是 DirectX 11(Shader 模型 5.0)
任何 Direct X SDK 版本都可以与任何 Direct X 版本一起使用吗?
最新的 DirectX SDK(2010 年 6 月)最多支持 DirectX 11。不支持 DirectX 11.1。
我是 Visual Studio 中的开发人员,他使用 DirectX 工具(DX 诊断工具和新项目模板)。你在这里问了几个不同的问题,但我会尽力回答我能回答的问题。
1 - DX 应用程序开发需要哪些 SDK?这个链接在这里作为最好的信息。基本上从 2010 年 6 月的 DirectX SDK 开始,DX SDK 与 Windows 开发 SDK 相结合,因此如果您安装了最新的 Windows SDK,您将拥有开发最新 DX 应用程序的正确材料。 http://blogs.msdn.com/b/chuckw/archive/2013/07/01/where-is-the-directx-sdk-2013-edition.aspx
此链接还包含有关 Windows 8 上 DX 桌面应用程序问题的更深入信息。 http://blogs.msdn.com/b/chuckw/archive/2012/03/23/desktop-games-on-windows-8 -consumer-preview.aspx
请注意,您也可以在您的机器上安装 2010 年 6 月的 DirectX SDK,这不会造成任何损害,我们经常自己安装它,因为它有一些有用的示例应用程序可供查看,即使它们有点过时。 http://www.microsoft.com/en-pk/download/details.aspx?id=6812
2 - 我怎么知道我的显卡支持什么?我不确定您的意思是如何在运行时在我的 DX 应用程序中检测到这一点?或者,如果您的意思是我如何为我的特定系统快速查找它。要找出你自己的 GPU,它通常是一个非常快速的查找,只需找到你的设备名称并在线打卡,过去几年发布的大多数东西都支持 DX11,所以你应该没问题。如果您安装了我上面提到的 2010 年 6 月 SDK,您可以使用此处提到的功能工具: http ://www.danielmoth.com/Blog/What-DX-Level-Does-My-Graphics-Card-Support-Does- It-Go-To-11.aspx
在运行时 DX 有代码可用于检查正在运行的显卡是否能够使用高级 DX 11 功能。 http://msdn.microsoft.com/en-us/library/windows/desktop/hh404562(v=vs.85).aspx#check_support_of_new_direct3d_11.1_features_and_formats
http://msdn.microsoft.com/en-us/library/windows/desktop/ff476876(v=vs.85).aspx
3 - 任何 DirectX SDK 都适用于任何 DX 版本吗?因此,在这里您基本上总是希望使用最新的 DX SDK,正如您在上面的功能级别上的链接中看到的那样,您可以针对较低级别的 DX,同时仍然使用最新的 SDK 进行编码。如果您想创建在 DX 9 卡上运行的应用程序,只需使用最新的 SDK 和目标功能级别 9。