【问题标题】:Working with Direct X and VS2012使用 Direct X 和 VS2012
【发布时间】:2013-08-08 03:07:45
【问题描述】:

我同时拥有 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 版本一起使用吗?如您所见,我是这方面的新手,任何评论都会有所帮助。感谢您的宝贵时间。

【问题讨论】:

    标签: visual-studio-2012 directx


    【解决方案1】:

    如果我想为 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_3D3D_FEATURE_LEVEL_10_0 及更高版本的新功能将被禁用)。

    注意,开发最新的feature level 你不需要支持它的GPU。您可以在 WARP device 上运行和调试应用程序(非常慢,仅用于调试目的,不适用于最终用户版本)。例如,您可以拥有旧的 DirectX 10 卡(Shader 模型 4.0),但目标是 DirectX 11(Shader 模型 5.0)

    任何 Direct X SDK 版本都可以与任何 Direct X 版本一起使用吗?

    最新的 DirectX SDK(2010 年 6 月)最多支持 DirectX 11。不支持 DirectX 11.1。

    【讨论】:

    • 您知道任何适合初学者的参考资料(书籍、在线教程或任何)吗?我到处搜索,但找不到“使用 windows 8 sdk 开发直接 x 桌面应用程序”。谢谢
    • 我不知道这样的教程。但是,正如我在回答中所说,对于桌面开发,DirectX SDK 和 Windows SDK 的 DirectX 部分几乎相同,只是 Windows SDK 缺少一些 D3DX 功能。因此,您可以将旧代码转换为新代码(可能使用一些 3rd 方库(或您自己的)来加载纹理、网格、精灵绘图等)。D3DXMath 也可以轻松地在 DirectXMath 中转换。所以,拿起 rastertek.com 或 www.braynzarsoft.net 开始写作吧! =)
    • 呃,你的意思是我可以从旧的 Direct X SDK 教程中学习,并在使用 Windows SDK 时应用相同的知识,不是吗?
    【解决方案2】:

    我是 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多