一个 Direct3D 11 图形编程练习项目
适用环境:Windows 10/11, Visual Studio 2019 或更高版本
依赖:NuGet 包 DirectXTeX。在联网条件下,Visual Studio 会自行下载
构建步骤:
- 右键单击 MoonLanding 项目,将其设置为启动项目
- 如果要在 Visual Studio 中直接启动或调试该项目,那么需 要右键单击 MoonLanding 项目,将 属性 - 调试 - 工作目 录设置为 "$(TargetDir)"。因为 Visual Studio 不会将 该项设置保存到 VC 项目文件,所以需要手动设置该项。
- 构建 / 启动 / 调试
构建完成后,项目所需的所有资源文件(如 cso 文件,3D 模型文 件)都和可执行程序位于同一目录下。以该目录为工作目录启动程序 即可。
- Windows API
- NuGet 包 DirectXTeX。Visual Studio 会自动安装
- TinyGLTF,用于加载 glTF 3D 模型文件。是一个 header-only 的库
- LiteEngine: 简单封装了 DirectX 的 API。称不上 Engine
- MoonLanding: 登陆月球小游戏
使用 Blender 建模(或导入外部模型),导出到 glTF 2.0 格式。 在导出界面,需要勾选 Normals、Tangents;需要取消勾选 +Y Up (否则导入的相机会有问题);可以勾选 Punctual Lights(方向光、 点光、聚光灯)、Cameras(相机)。
如果一个 Mesh 没有显式设置 TANGENT,并且没有任何 UV,那么 Blender 导出插件不会导出 TANGENT。这种情况下,可以在 Blender 中手动添加 UV Map 后再导出。
在缺少 NORMAL 或者 TANGENT 的时候,为了简单明确起见, LiteEngine 会直接报错。
会导入:
- Mesh
- 灯光
- 材质和贴图
- 相机
不会导入:
- 动画
需要 glTF 文件中存在:
- 法线
- 正切线
不支持:
- 非三角形的信息
- 从稀疏缓冲区中读取数据
主要参考资料