Visual Studio中DirectX游戏的C++开发

利用C++的全部力量来构建由DirectX提供的高端游戏,运行在Windows家庭的各种设备上,包括台式机、平板电脑和电话。在这个博客文章中,我们将在VisualStudio中用C++进行DirectX开发。首先,我们将研究如何获取DirectX桌面和通用Windows平台(UWP)开发所需的工具,然后我们将开始使用内置的项目模板,然后编写DirectX游戏的C++代码和HLSL(高级着色语言)着色器。接下来,我们将使用世界级的visualstudio调试器和visualstudiodirectx图形调试器和探查器来捕获和修复代码中的问题。最后,我们将讨论如何使用visualstudio测试DirectX游戏并与团队成员协作。

null

安装Visual Studio for DirectX开发

第一, 下载Visual Studio 2017 并启动visualstudio安装程序。

要构建DirectX桌面游戏,请选择“ 用C++开发游戏 “下的工作量” 移动和游戏 “类别。这个工作负载为您提供了构建桌面DirectX游戏的核心工具,包括VisualStudio核心编辑器、Visual C++编译器、Windows通用C运行时和VisualStudio调试器。

1-install-vs2017

强烈建议使用预选组件。以下是两个推荐的组件和其他可选组件,它们对构建DirectX游戏非常有用:

  • C++剖析工具 :包括针对DirectX的图形诊断(也称为Visual Studio图形调试器)和一组针对内存、CPU和GPU的分析工具。默认选中。
  • Windows 10 SDK :默认选择最新的Windows 10 SDK。
  • Windows 8.1 SDK和UCRT(Universal C Runtime)SDK
  • 不可信构建:安装 来自IncrediBuild.com的IncrediBuild ,一个用于代码构建、数据构建和开发任务的分布式计算解决方案。
  • Cocos:安装 Cocos创建者来自cocos2d-x.org ,制作Cocos2d游戏的编辑。
  • 虚幻引擎安装程序:安装 来自unrealengine.com的史诗游戏发射器 ,您可以使用它下载并安装Unreal引擎。

如果您还对为UWP构建DirectX游戏以在Windows系列的各种设备上运行感兴趣,可以通过选中 通用Windows平台开发 “下的工作量” “窗口” “的类别” C++通用Windows平台工具 已选择选项。C++ UWP组件为DirectX11和DirectX12增加了核心C++ + UWP支持和3个DirectX项目模板,以使您快速启动。强烈建议DirectX开发使用“图形调试器和GPU探查器”组件,因为它引入了用于DirectX图形调试的图形诊断功能和用于分析DirectX游戏中GPU和CPU使用情况的GPU使用功能。

2-install-uwp

入门

UWP的DirectX游戏

UWP工作负载附带3个DirectX项目模板。使用菜单项 新建 -> 项目 要启动“新建项目”对话框,然后在右上角的搜索框中键入“DirectX”,以查找DirectX的项目模板:DirectX11 App、DirectX12 App、DirectX11和XAML App。选择一个模板并单击 好的 .

3-templates

创建项目后,您可以通过按F5或单击来立即运行DirectX应用程序 调试 -> 从调试开始 从菜单上。你应该看到一个彩色的三维立方体在你的屏幕上旋转。

桌面DirectX游戏

要构建DirectX桌面应用程序,可以从 Win32项目 模板,或下载 Win32游戏模板 ,或从 DirectX11示例 DirectX12示例 作为起点。

用VisualStudioIDE的全部功能编写C++代码

现在我们运行了一个基本的3D应用程序,现在是在C++中添加游戏逻辑的时候了。使用VisualStudio生产力特性的全部功能,包括智能感知和代码导航,在C++中编写游戏代码。

会员名单 快捷信息 ,如下面的屏幕截图所示,这只是VisualStudio提供的IntelliSense功能的两个示例,这些功能可以使代码编写更简单、更快。 会员名单 显示类型或命名空间中有效成员的列表。在C++代码中的对象实例中键入“->”将显示成员列表,并且可以通过按选项卡或通过键入空间或周期来将选定成员插入到代码中。 快捷信息 显示代码中任何标识符的完整声明。在下面的屏幕截图中,VisualStudio显示了DX::DeviceResources对象实例的成员列表和 GetBackBufferRenderTargetView 方法,使编写DirectX代码更容易。

4-editing

重构、自动完成、扭曲、引用突出显示、语法着色、代码片段是其他一些有用的生产力特性,它们对代码编写和编辑有很大的帮助。

在大型代码库中导航和在多个代码文件之间跳转可能是一项累人的任务。VisualStudio提供了许多优秀的代码导航功能,包括 转到定义 , 转到线条/符号/成员/类型 , 查找所有引用 , 查看 调用层次结构 , 对象浏览器 ,以及更多,以提高您的生产力。

这个 Peek定义 特性,如下面的屏幕截图所示,将定义带到当前代码文件中,允许查看和编辑代码,而无需切换您正在编写的代码。你可以找到 Peek定义 通过右键单击打开上下文菜单,或使用快捷方式Alt+F12查找要探索的方法。在屏幕截图中的示例中,VisualStudio引入了 CreateInputLayout方法 生活在 d3d1.h段 文件作为嵌入窗口嵌入到当前cpp文件中,使DirectX代码的读写更加高效。

5-navigation

编写和调试着色器

除了C++代码之外,编写着色器代码也是DirectX游戏构建的另一个重要部分。visualstudio着色器编辑器可以识别HLSL、FX和其他类型的着色器文件,并提供语法高亮显示和大括号自动完成,使着色器代码的读写更加容易。从捕获的帧调试着色器代码是查明渲染问题根源的另一个好方法。只需在着色器代码中设置一个断点,然后按F5进行调试。您可以在中检查变量和表达式 当地人 汽车 窗户。进一步了解 HLSL着色器调试器 .

6-shader

用世界一流的Visual Studio调试程序调试C++代码

对代码中的问题进行故障排除可能非常耗时。使用VisualStudio调试器帮助更快地查找和修复问题。在C++代码中设置断点,然后按F5启动调试器。当到达断点时,您可以在 汽车 观察 windows以及在数据提示中鼠标悬停,查看 调用堆栈 窗口,轻松进出功能。在下面截图中的示例中 汽车 窗口向我们显示了常量缓冲区中的数据以及设备资源对象实例的每个成员的值,使单步执行DirectX代码变得简单高效。

7-debugging

但这并不是visualstudio调试器所能做的全部。例如 编辑并继续 能力允许您在调试会话期间编辑C++代码,并在不必重新构建应用程序的情况下立即查看其影响,从而节省大量开发时间。

你可以在这篇博文中找到更多细节 C++调试与诊断 .

Visual Studio图形诊断

调试呈现问题

渲染问题很难解决。无论是位置偏移、颜色不正确还是闪烁问题,Visual Studio Graphics Diagnostics(又称Visual Studio Graphics debugger)都提供了一种从DirectX 10、11或12游戏本地或远程捕获和分析帧的简单方法。您可以检查每个DirectX事件、图形对象、像素历史记录和图形管道,以准确了解帧期间发生的情况。该工具还捕获每个图形事件的调用堆栈,使其易于在VisualStudio中导航回C++代码。进一步了解 Visual Studio图形诊断 .

8-graphics-debugging

分析帧性能

如果您正在寻找提高DirectX游戏帧速率的方法,VisualStudio帧分析会非常有用。它分析捕获的帧以查找昂贵的draw调用,并对它们执行实验以探索性能优化机会。结果将显示在一个有用的报告中,您可以稍后保存和检查该报告,或与您的团队成员共享。有关如何使用此工具的详细信息,请参阅博客文章 visualstudio图形框架分析在行动! .

9-frame-analysis

分析GPU使用情况

虽然框架分析工具可以帮助精确定位昂贵的绘图调用,但了解游戏如何在CPU和GPU上实时执行也是必不可少的。visualstudiogpu使用工具实时收集CPU和GPU性能数据,它补充了以脱机方式对捕获的帧执行的帧分析,为您提供游戏性能的完整视图。通过阅读GPU使用情况详细报告,您可以轻松确定性能瓶颈在哪里,是在CPU上还是在GPU上,并帮助您找到应用程序中可能存在问题的代码。 此GPU使用工具在VisualStudio博客中发布 包括对该工具的更详细的介绍。

10-gpu-usage

单元测试

运送高质量的游戏需要良好的测试。VisualStudio使用本地C++测试框架来编写单元测试。通过单击菜单将新的单元测试项目添加到您的解决方案中 新建 -> 项目 选择 本机单元测试项目 模板。这会自动将测试项目添加到解决方案中。在创建的 单元测试1.cpp 在单元测试项目中,找到testu METHOD(TestMethod1)开始添加测试逻辑代码。然后你可以打开 测试资源管理器 单击菜单打开窗口 试验 -> 窗口 -> 测试资源管理器 运行测试。另外,利用内置的代码覆盖工具(菜单 试验 -> 分析代码覆盖率 )了解单元测试覆盖了多少代码。这使您有信心运送高质量的游戏。

11-unit-testing

与团队成员协作

构建一个伟大的游戏通常涉及多个开发者。当涉及到源代码存储、共享和云构建时,VisualStudioTeamServices已经涵盖了您。

简单 注册一个免费的visualstudio团队服务 账户 然后您可以将DirectX游戏的源代码签入visualstudio团队服务。成功同步代码后,团队中的每个人现在都可以签出、编辑和签回源代码,从而使与其他团队成员的协作更加高效。

VisualStudioTeamServices还简化了游戏的连续集成。创建和管理在云中自动编译和测试游戏的构建过程。想知道这个版本中是否修复了一个bug?通过将工作项与代码关联,工作项将与代码更改和测试结果一起列在生成摘要中。

12-vsts

你可以在这篇博文中找到更多细节 C++开发团队的VisualStudio .

试用Visual Studio 2017开发C++游戏

下载Visual Studio 2017 ,试用并分享您的反馈。如有问题,请通过 报告问题 选项位于VisualStudio标题栏的右上角。跟踪您对 开发者社区门户 . 如需建议,请告知我们 用户语音 .

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享