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