环境:VS2017 语言:C++
第七章的习题量少,也比较简单,不过我们还是来仔细研究一下
先附上工程的链接:https://github.com/anguangzhihen/Dx11。
1.这边的程序都是以win64运行的;
2.如果没有找到Common脚本,请到工程/属性/VC++目录中添加包含目录“../Common”;
3.如果没有找到libs,请到工程/属性/链接器添加附加库目录“../Common/libs”
4.所有的练习都在工程中,全局搜索“练习7”关键字就能找到,想要运行打开注释即可。
有任何错误,请大佬们指正。
1.在Lighting Demo中改变光源的颜色,使直射光为红色、点光源为绿色、聚光灯为蓝色,查看效果?
答:
2.在Lighting Demo中改变高光的指数参数,查看效果?
答:
高光使用的指数来自于Material的a位参数,而rgb位仍代表的是颜色。该位值越大,高光衰减的就越厉害。
3.实现卡通渲染效果?
答:
该解答在LightHelper.fx中,根据书上提供的公式来实现就好。最终效果真的特别有感觉。
4.实现聚光灯可以动态改变其椎体范围的功能?
答:
if (GetAsyncKeyState('1') & 0x8000)
{
mSpotLight.Spot += 1;
}
if (GetAsyncKeyState('2') & 0x8000)
{
mSpotLight.Spot -= 1;
}
if (mSpotLight.Spot < 50.0f)
mSpotLight.Spot = 50.0f;
else if (mSpotLight.Spot > 1000.0f)
mSpotLight.Spot = 1000.0f;
通过上一章我们知道聚光灯原理实际和高光一样,所以我这边动态改变的高光计算时指数的大小,指数越大衰减的越厉害灯照亮范围就越小,指数越小衰减的越弱照亮范围就越大。