坐標(biāo)系與基本圖元(8) 摘要:
游戲程序通常都是運(yùn)行在全屏幕模式下,進(jìn)行全屏顯示的關(guān)鍵是使用全屏顯示的渲染設(shè)備。創(chuàng)建全屏顯示模式渲染設(shè)備同窗口模式渲染設(shè)備基本相同,區(qū)別是將
d3dpp.Windowed設(shè)置為FALSE,告訴Direct3D系統(tǒng),將要?jiǎng)?chuàng)建的是全屏模式渲染設(shè)備。此外,還需要明確指定后臺(tái)緩沖區(qū)的大小和格式,這和創(chuàng)建窗口模式渲染設(shè)備是不相同的,在創(chuàng)建窗口模式渲染設(shè)備時(shí)可將后臺(tái)緩沖區(qū)格式設(shè)置為D3DFMT_UNKNOWN,后臺(tái)緩沖區(qū)大小也可取默認(rèn)值,而在創(chuàng)建全屏模式渲染設(shè)備時(shí)這些都需要明確指定。
坐標(biāo)系與基本圖元(7) 摘要:
場景提交即將在后臺(tái)緩沖區(qū)繪制好的場景提交到前臺(tái)緩沖區(qū),從而在屏幕上顯示出來。提交接口函數(shù)是一組控制特定的渲染設(shè)備狀態(tài)的方法,這些設(shè)備影響顯示器的顯示。
(1)前臺(tái)緩沖區(qū):這是一塊由顯卡轉(zhuǎn)換來的矩形存儲(chǔ)區(qū),這塊矩形存儲(chǔ)區(qū)的內(nèi)容顯示在顯示器或其他輸出設(shè)備上。
(2)后臺(tái)緩沖區(qū):后臺(tái)緩沖區(qū)是一個(gè)表面,其內(nèi)容可以提交到前臺(tái)緩沖區(qū)。
(3)交換鏈:一組后臺(tái)緩沖區(qū)集合,它們被順序地提交到前臺(tái)緩沖區(qū)。一般情況下,一個(gè)全屏交換鏈通過翻轉(zhuǎn)設(shè)備驅(qū)動(dòng)接口(DDI)來提交隨后的顯示內(nèi)容,窗口交換鏈通過位塊傳送DDI提交顯示內(nèi)容。
坐標(biāo)系與基本圖元(6) 摘要: 靈活頂點(diǎn)格式(Flexible Vertex Format,
FVF)用來描述在頂點(diǎn)緩沖區(qū)中的頂點(diǎn)存儲(chǔ)格式中包含了哪些屬性。Direct3D應(yīng)用程序可以用幾種不同的方式定義靈活頂點(diǎn)格式。靈活頂點(diǎn)格式使應(yīng)用程序只使用它需要的頂點(diǎn)數(shù)據(jù),排除那些它不需要的組成成分。這樣,應(yīng)用程序可以節(jié)省內(nèi)存空間,減少系統(tǒng)帶寬。通過D3DFVF的組合,可以描述圖元頂點(diǎn)的格式。靈活頂點(diǎn)格式指定的格式包括點(diǎn)的大小,用D3DFVF_PSIZE指定,該大小在投影機(jī)空間用來表示未經(jīng)變換的頂點(diǎn),在設(shè)備空間用來表示經(jīng)過變換的頂點(diǎn)。
坐標(biāo)系與基本圖元(5) 摘要:
當(dāng)繪制一個(gè)比較復(fù)雜的圖形時(shí),需要使用許多相互鄰接的三角形。如果為每個(gè)三角形準(zhǔn)備三個(gè)頂點(diǎn)數(shù)據(jù),顯然有許多數(shù)據(jù)是重復(fù)的,這樣會(huì)浪費(fèi)大量的內(nèi)存和系統(tǒng)帶寬。為了解決這一問題,可以先創(chuàng)建一個(gè)頂點(diǎn)緩沖區(qū),將不重復(fù)的頂點(diǎn)數(shù)據(jù)寫入頂點(diǎn)緩沖區(qū),然后創(chuàng)建一個(gè)頂點(diǎn)索引緩沖區(qū)(index
buffer),存放各個(gè)三角形的頂點(diǎn)索引信息,最后通過頂點(diǎn)索引和頂點(diǎn)數(shù)據(jù)共同完成圖形繪制。
坐標(biāo)系與基本圖元(4) 摘要:
上面使用頂點(diǎn)緩沖區(qū)繪制的是三角形列表圖元,前面介紹過Direct3D支持點(diǎn)列表,線段列表、線段條帶、三角形列表、三角形條帶、三角扇形6種基本圖元。下面通過示例程序BasicPrimitive演示各種基本圖元的繪制。該示例程序使用同一個(gè)頂點(diǎn)緩沖區(qū)繪制不同類型的圖元,程序中通過一個(gè)全局變量標(biāo)識(shí)當(dāng)前繪制的圖元類型,通過單擊鍵盤上的"1"
~ "6"數(shù)字鍵可以在各圖元類型之間進(jìn)行切換,單擊空格鍵可以在線框模式和實(shí)體模式之間切換。
坐標(biāo)系與基本圖元(3) 摘要:
函數(shù)IDirect3DDevice9::SetStreamSource()將頂點(diǎn)緩沖區(qū)和渲染數(shù)據(jù)流鏈接。
坐標(biāo)系與基本圖元(2) 摘要:
在創(chuàng)建頂點(diǎn)緩沖區(qū)之前,需要先定義一個(gè)表示頂點(diǎn)的結(jié)構(gòu)類型,描述頂點(diǎn)保存格式的FVF和一個(gè)保存頂點(diǎn)的結(jié)構(gòu)數(shù)組。
坐標(biāo)系與基本圖元(1) 摘要:
圖元(primitives)是Direct3D中定義的基本圖形表示,它是組成一個(gè)單一實(shí)體的一組頂點(diǎn)。最簡單的圖元是三維坐標(biāo)系中多個(gè)點(diǎn)的集合,稱為點(diǎn)列表(point
list)。通常,圖元是多邊形(polygon),一個(gè)多邊形是由至少三條邊組成的封閉圖形。最簡單的多邊形是三角形,Direct3D使用三角形來構(gòu)成大多數(shù)其他多邊形,這是因?yàn)槿切蔚娜齻€(gè)頂點(diǎn)肯定是共面的,而渲染不共面的頂點(diǎn)效率比較低。通過組合三角形可以形成更大、更復(fù)雜的多邊形和網(wǎng)格(mesh)。