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