DirectX11编程8 红龙书第七章练习

环境: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中,根据书上提供的公式来实现就好。最终效果真的特别有感觉。

 

3.实现聚光灯可以动态改变其椎体范围的功能?

答:

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;

 

通过上一章我们知道聚光灯原理实际和高光一样,所以我这边动态改变的高光计算时指数的大小,指数越大衰减的越厉害灯照亮范围就越小,指数越小衰减的越弱照亮范围就越大。