使用 DirectX 创建简单的通用 Windows 平台 (UWP) 游戏

在此教程集中,你将学习如何使用 DirectX 和 C++/WinRT 创建名为 Simple3DGameDX 的基本通用 Windows 平台 (UWP) 示例游戏。 游戏玩法在简单的第一人称 3D 射击库中产生。

注意

Simple3DGameDX 示例游戏的下载链接是 Direct3D 示例游戏。 C++/WinRT 源代码位于名为 cppwinrt 的文件夹中。 有关其他 UWP 示例应用的信息,请参阅 适用于 Windows 开发的示例应用程序

这些教程将介绍游戏的所有主要部分,包括加载艺术和网格之类的资源,创建主游戏循环,实现简单的呈现管道以及添加声音和控件的过程。

你还将看到 UWP 游戏开发技巧和注意事项。 我们将重点介绍关键的 UWP DirectX 游戏开发概念,并围绕这些概念阐述特定于 Windows 运行时的注意事项。

目标

要了解 UWP DirectX 游戏的基本概念和组件,更熟练地使用 DirectX 设计 UWP 游戏。

需要了解的事项

对于本教程,需要熟悉这些主题。

  • C++/WinRT。 C++/WinRT 是适用于 Windows API 的标准新式 C++17 语言投影,作为基于头文件的库实现,旨在提供对新式 Windows API 的一流访问。
  • 基本线性代数和牛顿物理学概念。
  • 基本图形编程术语。
  • 基本的 Windows 编程概念。
  • 基本熟悉 Direct2DDirect3D 11 API。

Simple3DGameDX 示例游戏实现一个简单的第一人称 3D 射击库,游戏内容是玩家射击移动目标上的球。 击中每个目标就奖给一组点数,玩家可以晋级 6 个难度不断增加的级别。 在级别末尾,将记录点数,并且玩家可以赢得最终得分。

该示例演示以下游戏概念。

  • DirectX 11.1 与 Windows 运行时之间的互操作。
  • 第一人称 3D 视角和相机
  • 立体 3D 效果
  • 3D 中对象之间的冲突检测
  • 处理玩家的鼠标、触摸和 Xbox 控制器控件输入
  • 音频混合和播放
  • 基本游戏状态机

运行中的示例游戏

主题 说明
设置游戏项目 开发游戏的第一步是在 Microsoft Visual Studio 中设置一个项目。 为游戏开发专门配置项目后,可以在以后将其重新用作模板类型。
定义游戏的 UWP 应用框架 为通用 Windows 平台 (UWP) 游戏进行编码的第一步是生成使应用对象与 Windows 交互的框架。
游戏流管理 定义支持玩家和系统交互的高级状态机。 了解 UI 如何与整个游戏的状态机交互以及如何为 UWP 游戏创建事件处理程序。
定义主游戏对象 现在,我们将了解示例游戏主对象的详细信息,以及如何将其实现的规则转换为与游戏世界的交互。
呈现框架 I:呈现简介 了解如何开发显示图形的呈现管道。 呈现简介。
呈现框架 II:游戏呈现 了解如何装配显示图形的呈现管道。 游戏呈现、设置和准备数据。
添加用户界面 了解如何向 DirectX UWP 游戏添加 2D 用户界面覆盖。
添加控件 现在,我们了解该示例游戏如何在 3D 游戏中实现移动观看控件,以及如何开发基本的触摸、鼠标和游戏控制器控件。
添加声音 使用 XAudio2 API 开发一个简单的声音引擎,以播放游戏音乐和声音效果。
扩展示例游戏 了解如何为 UWP DirectX 游戏实现 XAML 覆盖。