Repository files navigation
本案例运行环境为windows 10,在windows 7环境下无法运行,后序会开发windows 7运行的分支。
01 Chapter 6 BoxApp: 在学习过DX12的基础之上,DX11的逻辑反而更加简单,在这里无需赘述。在这里对原先框架进行了大量修改,添加了一些常用的方法,具体可以参考d3dApp.h/.cpp和d3dUtil.h/.cpp文件。在DX11中已经支持HLSL,并且编译器也会警告,未来可能不再支持FX相关的编译,在这里也全部使用了HLSL新的处理方式。
02 Chapter 6 ShapesApp: 在这里对框架再次进行了修改,在d3dApp.h中添加了绘制几何体的辅助结构,在绘制物体时可以方便地堆顶点缓冲区和索引缓冲区进行偏移。同时修复了d3dApp中OnResize()方法中的bug,避免Comptr的引用错误。
03 Chapter 6 WavesApp: 动态顶点缓冲区和常量缓冲区类似,都需要每一帧都更新数据,实现起来并不复杂。相比DX12,DX11不能操纵GPU围栏,因此不能将常量资源封装,这样对于静态物体就不用每一帧更新了,这是DX12十分优越的一点。
04 Chapter 6 Exersice_2: 两个输入槽分别处理位置和顶点数据,在这里需要创建两个顶点缓冲区,在绘制时也需要根据输入槽不同指定对应的顶点缓冲区。
05 Chapter 7 WavesLightingApp: 在这里将框架再次重构,添加了光照信息、材质信息,优化了时间处理。
06 Chapter 7 ShapesLightingApp: 有了光照,场景相对的有了一定细节,后序还会更加完善。
07 Chapter 8 CrateApp: 纹理使用细节很多,在这里只是最基础的使用。
08 Chapter 8 WavesApp: 原书基础上还原,添加了纹理,程序逐渐开始有趣,陆地海洋也开始漂亮了。
09 Chapter 8 Exercise_3: 此题使用了两张纹理,这里初学可能会有一个误区,就是一个物体只能绑定一个材质,一个材质只有一张纹理,实质上在这里材质只是有一个纹理在描述符堆中索引,并没有绑定材质,最终着色器接收纹理还是在IA阶段。此题还有一个难点就是纹理旋转,二维旋转矩阵容易求出,就是在考虑旋转中心点时需要多下一点心思,具体可以参考此题的Shader/Default.hlsl,在顶点着色器中实现纹理旋转。
10 Chapter 8 Exercise_5: 此题首先需要使用texconv 工具将bmp文件转为dds文件,程序运行时每一帧重新指定纹理即可。
11 Chapter 8 Exercise_7: 此题没有难度,主要是对纹理的基础使用,完善后场景也比较丰富。
12 Chapter 9 BlendDemo: 透明度混合、透明度测试的逻辑都比较简单,最主要的就是状态的判断,还有透明物体通常存在渲染顺序的问题,要注意渲染中绘制物体顺序,才能得到正确的效果。
13 Chapter 10 StencilDemo: 模板缓冲区十分有趣,很多奇特的效果都可以使用模板缓冲区实现,在这里实现镜面效果只是最简单的使用,但是细节还是存在不少,尤其是渲染状态的切换,需要仔细思考。
14 Chapter 10 Exercise_7: 此题和模板关系不大,只是透明度混合的应用。
15 Chapter 10 Exercise_8: 此题个人认为本章最难习题,因为模板缓冲区的值我们并不能直接读取。在这里基于屏幕后处理实现。首先我们需要在着色器中新建一个常量缓冲区,其中存放我们OM设置的模板参考值;然后我们绘制几何体的时候,让所有物体都能通过模板测试,并且将模板值+1;随后我们基于屏幕后处理,将模板参考值从1-5依次设置,每次只能绘制出对应参考值的像素;同时我们把这个参考值传递给存放模板参考值的常量缓冲区,就可以根据模板参考值的不同绘制出不同的颜色。
16 Chapter 10 Exercise_9: 此题根据题目提示完全可以自写,只是设置一下混合状态、关闭深度测试,这种策略观察over draw的效果比上一题更加明显。
17 Chapter 10 Exercise_10: 这里可以当做模板缓冲区使用方法的一次巩固,类似的这里还将阴影也反射到了镜子中。
18 Chapter 11 BillboardApp: 广告牌效果只是几何着色器的基础应用,在这里实现也比较简单,主要是注意绘制过程,其中的状态变换较多。
19 Chapter 11 Exercise_1: 此题是集合着色器的简单应用,用线条带绘制一个圆形,每一个线条带有两个顶点,几何着色器输出4个顶点,前2个保持不变,后2个在y轴上进行偏移,即可绘制出一个线条带圆柱。
20 Chapter 11 Exercise_2: 此题一次细分比较简单,但是二次细分的逻辑比较绕,需要多下点心思。
21 Chapter 11 Exercise_3: 此题爆炸效果实现比较简单,让顶点延表面法线扩张即可。
22 Chapter 11 Exercise_4: 在这里顶点还是用三角形组合,但是在几何着色器中让三角形的两个顶点重合,因此看起来就是线段。本质上还是几何着色器拓展顶点。
23 Chapter 11 Exercise_5: 这道题的原理和上一题是一样的,只是输出顶点的位置和数量不同,在这里以三角形的重心坐标输出表面法线。
About
Introduction to 3D Game Programming with DirectX 11 练习题解答
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.