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

本文详细解析了VS2017环境下使用C++进行DirectX 11编程的习题,包括改变光源颜色、调整高光指数、实现卡通渲染及动态调整聚光灯椎体范围等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境: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;

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值