




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第四章 基本圖元主講:蘇振揚 4.1 Direct3D坐標系 4.2 Direct3D基本圖元 4.3 Direct3D顏色表示 4.4 使用頂點緩存繪制圖形4.1 Direct3D坐標系 在空間幾何中,絕大多數情況下使用笛卡爾坐標系為參照系表示圖形,表示二維圖形時使用二維笛卡爾坐標系,三維圖形使用三維笛卡爾坐標系。4.1 Direct3D坐標系 二維笛卡爾坐標系4.1 Direct3D坐標系 三維笛卡爾坐標系 4.2 Direct3D基本圖元 圖元是Direct3D中定義的基本圖形表示形式。 Direct3D定義了六種基本圖元。頂點集合、線段集合、線段條帶、三角形集合、三角形條帶、三角扇形頂
2、點集合線段集合4.2 Direct3D基本圖元線段條帶三角形集合三角形條帶三角扇形4.2 Direct3D基本圖元 基于渲染效率的考慮, Direct3D使用三角形來構成大多數其他多邊形,這是因為三角形的三個頂點肯定是共面的,而渲染不共面的頂點效率比較低。4.3 Direct3D顏色表示 在Direct3D中,顏色用RGB三元組表示。RGB數據可用以下三種結構表示: D3DCOLOR D3DCOLORVALUE D3DXCOLOR4.3 Direct3D顏色表示 一、D3DCOLOR它實際上與DWORD類型完全相同(由關鍵字typedef定義) Typedef DWORD D3DCOLORAl
3、pha紅綠藍32bits4.3 Direct3D顏色表示 一、D3DCOLOR指定:要指定每個顏色分量的值,并將其插入到D3DCOLOR類型的恰當位置上,需要借助位運算。 Direct3D提供了宏D3DCOLOR_ARGB幫助我們完成這樣的工作。D3DCOLOR red= D3DCOLOR_ARGB(255,255,0,0)D3DCOLOR someColor= D3DCOLOR_ARGB(255,144,34,25)4.3 Direct3D顏色表示 一、D3DCOLOR指定:類似的宏還有D3DCOLOR_RGBA和D3DCOLOR_XRGB.#define D3DCOLOR_RGBA(r,g
4、,b,a) D3DCOLOR_ARGB (a,r,g,b) #define D3DCOLOR_XRGB (r,g,b) D3DCOLOR_ARGB (0 xff,r,g,b) 有時,直接使用DWORD類型變量表示顏色。4.3 Direct3D顏色表示 二、D3DCOLORVALUETypedef struct D3DCOLORVALUEfloat r;float g;folat b;float a; D3DCOLORVALUE4.3 Direct3D顏色表示 三、D3DXCOLOR和D3DCOLORVALUE數據成員相同,此外還提供了一組構造函數和運算符重載函數,方便了顏色的運算。D3DCOL
5、ORVALUE和D3DXCOLOR可以互換。4.4 使用頂點緩存繪制圖形 頂點是3D幾何學中的基本元素,頂點緩存是一個包含頂點數據的連續內存空間,類似的,索引緩存是一個包含索引數據的連續內存空間。 之所以使用頂點緩存和索引緩存而非數組來存儲數據,是因為頂點緩存和索引緩存可以被放置在顯存中。進行繪制時,使用顯存中的數據將獲得比使用系統內存中的數據快得多的繪制速度。4.4 使用頂點緩存繪制圖形 一、頂點結構和頂點格式在程序中,描述三角形單元時,我們需要指定該三角形單元3個頂點的位置。而描述物體時,我們需要指定構成該物體的三角形單元列表。在Direct3D背景下,頂點可以包含很多屬性:位置坐標、顏色
6、、法線、紋理坐標等。4.4 使用頂點緩存繪制圖形 一、頂點結構和頂點格式Direct3D賦予我們自行定義頂點格式的自由,即允許我們定義頂點的各分量。 首先,需要創建一個結構體表示頂點。struct ColorVertexD3DXVECTOR3 position;D3DXVECTOR3normal;其次要用靈活頂點格式標記的組合來描述頂點的組織結構。4.4 使用頂點緩存繪制圖形一、頂點結構和頂點格式struct Vertexfloat _x, _y, _z; float _nx, _ny, _nz; float _u, _v; 其頂點格式為:D3DFVF_XYZ|D3DFVF_NORMAL|D3
7、DFVF_TEX14.4 使用頂點緩存繪制圖形 一、頂點結構和頂點格式注:1.程序中為使用方便,常使用宏定義靈活頂點格式。2.靈活頂點格式標記的順序必須與頂點結構中相應類型數據定義的順序保持一致。4.4 使用頂點緩存繪制圖形 二、內存池類型在Direct3D中,需要用到多種資源,例如頂點緩存、索引緩存、紋理等。資源位于哪種內存中,對于程序的性能和代碼編寫都有重要的影響。 Direct3D使用D3DPOOL枚舉表示各種內存池類型。D3DPOOL_DEFAULTD3DPOOL_MANAGEDD3DPOOL_SYSTEMMEMD3DPOOL_SCRATCH4.4 使用頂點緩存繪制圖形 二、內存池類型
8、1. D3DPOOL_DEFAULT默認值。該類型內存值指示Direct3D將資源放入最適合該資源類型及其使用方式的存儲區中。調用IDirect3DDevice9:Reset之前,必須對默認內存池中的資源銷毀或釋放。2. D3DPOOL_MANAGED放入該托管內存池中的資源將交由Direct3D管理。建議使用。3. D3DPOOL_SYSTEMMEM資源放入系統內存4. D3DPOOL_SCRATCH位于臨時內存中,不直接用于渲染操作,只能進行內存加鎖、復制等操作。4.4 使用頂點緩存繪制圖形 三、創建頂點緩存創建頂點緩存的前期工作: 1.定義表示頂點的結構 2.定義描述頂點格式的FVF 3
9、.保存頂點數據的結構數組4.4 使用頂點緩存繪制圖形 三、創建頂點緩存使用IDirect3DDevice9接口的CreateVertexBuffer()方法創建頂點緩存。g_pd3dDevice-CreateVertexBuffer(3 * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_MANAGED, &g_pVB, 0); 相當于D3DFVF_XYZRHW|D3DFVF_DIFFUSE4.4 使用頂點緩存繪制圖形 三、創建頂點緩存為了訪問頂點緩存中的數據,我們需要獲得指向緩存內部存儲區的
10、指針,可以借助方法Lock來獲取指向緩存內容的指針。IDirect3DVertexBuffer9:Lock()4.4 使用頂點緩存繪制圖形 三、創建頂點緩存OffToLock自緩存的起始點到開始鎖定的位置的偏移量,單位為字節。SizeToLock所要鎖定的字節數。ppbData指向被鎖定的存儲區起始位置的指針。Flags表示頂點緩存的加鎖屬性,可取默認值0.4.4 使用頂點緩存繪制圖形 三、創建頂點緩存緩存區SizeToLockOffToLockOffToLock+ SizeToLock4.4 使用頂點緩存繪制圖形 三、創建頂點緩存1. VOID* pVertices; g_pVB-Lock(
11、 0, sizeof(vertices), (void*)&pVertices, 0 )2. VOID* pVertices; g_pVB-Lock( 0, 0, (void*)&pVertices, 0 )當前兩個參數為0時,表示鎖定整個緩存。 4.4 使用頂點緩存繪制圖形 三、創建頂點緩存得到內存地址后,便可對內存進行操作。memcpy( pVertices, vertices, sizeof(vertices) ); 另一種賦值方式:Vertex* vertices;-Lock(0, 0, (void*)&vertices, 0);vertices0 = Vertex(-1.0f, 0.0f, 2.0f);/定義頂點數據vertices1 = Vertex( 0.0f, 1.0f, 2.0f);vertices2 = Vertex( 1.0f, 0.0f, 2.0f);Triangle-Unlock();4.4 使用頂點緩存繪制圖形 四、渲染頂點緩存g_pd3dDevice-SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );g_pd3dDevice-SetFVF( D3DFVF_XYZRHW|D3DFVF_DIFFUSE );g_pd3dDevice-DrawPrimit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 風電機組混凝土材料特性與應用研究
- 高校預算管理一體化體系構建與實施路徑研究
- “卻”字句法語義功能研究:歷時演變視角
- 燃燒節能技術課件
- CFD數值模擬在燒結礦環煙罩結構優化中的應用
- 文檔機器翻譯-洞察闡釋
- Last-milelast-mile配送效率提升-洞察闡釋
- 游戲作文課件
- 量子自旋液體的量子計算與量子信息處理-洞察闡釋
- 鑄造行業物聯網解決方案-洞察闡釋
- 工業機器人講課件
- 篩網維護使用管理制度
- 專科護士基地管理制度
- 2025年1月遼寧省普通高中學業水平合格性考試英語試題(原卷版)
- 二年級下二升三數學暑假作業(人教)
- 期末達標測試卷(含答案)2024-2025學年人教版七年級數學下冊
- 云南省昆明市2023-2024學年高二下學期期末質量檢測數學試題(解析版)
- 2025年蘇教版四年級(下)期末考試數學試卷(含答案)
- 早期腫瘤篩查
- 農業托管經營協議書
- 腫瘤內科病案質量管理
評論
0/150
提交評論