(一)、习题答案
1、EXERCISE3
本习题是模拟不使用stencil的情况下物体会绘制到反射面的后面,但是我们启用了深度测试,因此深度测试是有效的。
2、EXERCISE4
本习题是在不启用stencil计数时会导致的Bouble Blending。这会导致局部阴影被多次绘制出现黑斑。
3、EXERCISE5
这是第一种情况下绘制的场景,反射的骷髅浮在了墙上(为了简单,我们没有单独对墙进行处理,这导致与墙在同一层的非反射骷髅绘制出现了不正常的现象),原因是,在绘制墙时我们禁用了深度,墙的深度信息没有写入到深度缓冲区,所以在后续绘制物体时就像之前没有绘制任何场景一样,会覆盖掉(非反射骷髅也一样,后写入的像素颜色会覆盖之前写入的颜色导致绘制错误)。
这是启用了深度测试,结果则是正常的。
4、EXERCISE6
本题有一点点小错误,reflected teapot 应该是 reflected skull。不对三角形环绕方向进行处理会导致三角面法线反向,得到的光照肯定是不正确的。如下:
5、EXERCISE7
为了简单,我们将bmp图像转成了纹理数组。然后用时间值对纹理数据进行采样形成动画。本题中我们没有绘制其他场景,因些最终结果与书上截图有些不一样,但原理是一样的。
6、EXERCISE8
本题处理思路与流程与提示一致,结果如下:
7、EXERCISE9
本题也是用颜色叠加的方法处理,结果如下:
8、EXERCISE11
本题将地板也放到反射层里绘制即可。
9、EXERCISE12
去掉偏移值就会出现z-fighting问题,这是由于硬件精度引起的问题。
(二)、习题源码下载
本章第七题使用到的资源太大了,csdn给的空间又太小,为了给以后的文章附件留点空间,第七题用到的图片资源不上传,如果读者需要,请留言留邮件联系索取。