随笔分类 - DirectX11 入门篇
摘要:前言 Dear ImGui是一个开源GUI框架。除了UI部分外,本身还支持简单的键鼠交互。目前项目内置的是V1.87版本,大概半年时间会更新一次版本,并且对源码有小幅度调整。 注意:直接下载源码使用会导致19章之后的UI效果有误,修改了源码imgui_impl_dx11.cpp,需要用项目源码中的替
阅读全文
摘要:前言 注意:本教程仅针对代码版本1.27.2及更高版本的项目,仍在使用旧版本代码的用户请留意更新项目代码 在本教程中,以前的第一人称摄像机实现是源自龙书的做法。考虑到摄像机的观察矩阵和物体的世界矩阵实质上是有一定的联系,因此可以将这部分变换给剥离出来,使用统一的Transform类,然后摄像机类与游
阅读全文
摘要:前言 在之前的DirectX SDK中,纹理的读取使用的是D3DX11CreateShaderResourceViewFromFile函数,现在在Windows SDK中已经没有这些函数,我们需要找到DDSTextureLoader和WICTextureLoader这两个库来读取DDS位图和WIC位
阅读全文
摘要:前言 注意:从这一章起到后面的所有项目无一例外都利用了Direct2D与Direct3D互操作性,但系统要求为Win10, Win8.x 或 Win7 SP1且安装了KB2670838补丁以支持Direct3D 11.1(DXGI1.2)。否则将无法显示所有文本。如果你的Win7系统运行程序无法显示
阅读全文
摘要:前言 这一章项目涉及到的内容非常多,在学习之前你还需要了解下面内容: 章节内容 深入理解HLSL常量缓冲区打包规则 学习目标: 熟悉基本的Phong光照模型 掌握常量缓冲区打包规则 熟悉几何模型的顶点位置、法向量计算,能够使用Geometry库,实现原理可以留到看完纹理映射和法线贴图再回头看 熟悉光
阅读全文
摘要:前言 由于个人觉得龙书里面第4章提供的Direct3D 初始化项目封装得比较好,而且DirectX SDK Samples里面的初始化程序过于精简,不适合后续使用,故选择了以Init Direct3D项目作为框架,然后还使用了微软提供的示例项目,两者结合到一起。你需要下载源码后再开始阅读。 此外,在
阅读全文
摘要:前言 xnamath.h原本是位于DirectX SDK的一个数学库,但是现在Windows SDK包含的数学库已经抛弃掉原来的xnamath.h,并演变成了现在的DirectXMath.h。其实本质上并没有多大区别,只是将原来的xna数学函数移植到了这里,并多了一层名称空间DirectX。 Dir
阅读全文
摘要:前言 提供键鼠输入可以说是一个游戏的必备要素。在这里,我们不使用DirectInput,而是使用Windows消息处理机制中的Raw Input,不过要从头开始实现会让事情变得很复杂。DXTK提供了鼠标输入的Mouse.h和键盘输入的Keyboard.h(现在已经单独抽离出来使用),对消息处理机制进
阅读全文
摘要:前言 一个立方体有8个顶点,然而绘制一个立方体需要画12个三角形,如果按照前面的方法绘制的话,则需要提供36个顶点,而且这里面的顶点数据会重复4次甚至5次。这样的绘制方法会占用大量的内存空间。 接下来会讲另外一种绘制方法,可以只提供立方体的8个顶点数据,然后用一个索引数组来指代使用哪些顶点,按怎样的
阅读全文
摘要:前言 由于在Direct3D 11中取消了固定管线,要想绘制图形必须要了解可编程渲染管线的流程,一个能绘制出图形的渲染管线最少需要有这两个可编程着色器:顶点着色器和像素着色器。 在阅读本章内容之前,你还需要先浏览下面的章节: 章节 HLSL编译着色器的三种方法 学习目标: 初步了解渲染管线 能够动手
阅读全文
摘要:前言 这一章涉及的是常用的矩阵变换,绝大部分内容节选自龙书,以帮助大家构建矩阵与2D/3D空间的数学联系。 学习目标: 了解Direct3D的一些内在规定 掌握矩阵变换与2D/3D空间的联系 熟悉3D变换与投影成像的过程 熟悉2D变换与投影成像的过程 DirectX11 With Windows S
阅读全文