1. 程式人生 > >DirectX11程式設計8 紅龍書第七章練習

DirectX11程式設計8 紅龍書第七章練習

環境:VS2017  語言:C++

第七章的習題量少,也比較簡單,不過我們還是來仔細研究一下

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;

通過上一章我們知道聚光燈原理實際和高光一樣,所以我這邊動態改變的高光計算時指數的大小,指數越大衰減的越厲害燈照亮範圍就越小,指數越小衰減的越弱照亮範圍就越大。