創建頂點/緩存縮索引
HRESULT IDirect3DDevice9::CreateVertexBuffer(
UINT Length,
DWORD Usage,
DWORD FVF,
D3DPOOL Pool
IDirect3DVertexBuffer9** ppVertexBuffer,
HANDLE* pSharedHandle
);
HRESULT IDirect3DDevice9::CreateIndexBuffer(
UINT Length,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
IDirect3DIndexBuffer9** ppIndexBuffer,
HANDLE* pSharedHandle
);
l Length —— 分配給緩存的字節大小。假如想得到一個能存儲8個頂點的頂點緩存,那麼我們就要在頂點結構中設置這個參數爲 8 * sizeof ( Vertex ) 。
l Usage —— 指定關於怎樣使用緩存的額外信息。這個值可以是0,沒有標記,或者是下面標記的一個或多個的組合:
nD3DUSAGE_DYNAMIC——設置這個參數可以使緩存是動態的。在下一頁說明靜態和動態緩存。
nD3DUSAGE_POINTS——這個參數指定緩存存儲原始點。原始點將在第14章粒子系統中介紹。這個參數僅僅用在頂點緩衝中。
nD3DUSAGE_SOFTWAREPROCESSING——使用軟件頂點處理
nD3DUSAGE_WRITEONLY——指定應用程序只能寫緩存。它允許驅動程序分配最適合的內存地址作爲寫緩存。注意如果從創建好的這種緩存中讀數據,將會返回錯誤信息。
l FVF —— 存儲在緩存中的頂點格式
l Pool —— 緩存放置在哪一個內存池中
l ppVertexBuffer ——返回創建好的頂點緩存的指針。
l pSharedHandle ——沒有使用;設置爲0。
l Format ——指定索引的大小;使用D3DFMT_INDEX16設置16位索引,使用D3DFMT_INDEX32設置32位索引。注意並非所有設備都支持32位索引;請檢查設備能力。
l ppIndexBuffer ——返回創建好的索引緩存的指針。
基本圖元:
DrawPrimitive();//繪製頂點緩存的內容
HRESULT IDirect3DDevice9::DrawPrimitive(
D3DPRIMITIVETYPE PrimitiveType,
UINT StartVertex,
UINT PrimitiveCount
);
l PrimitiveType——我們繪製的圖元類型。比如,我們能繪製點和線以及三角形。以後我們使用三角形,用D3DPT_TRIANGLELIST參數。
D3DPT_POINTLIST 圖元是一些點
D3DPT_LINELIST /_LINESTRIP 圖元是一些離散的線段/連接的線段
D3DPT_TRIANGLELIST/_TRIANGLESTRIP/_TRANGLEFAN s三角形列,帶,扇
l StartVertex——索引到在頂點流中的一個元素。設置渲染頂點中的開始點。這個參數給予我們一定的機動性,可以繪製一個頂點緩存中的某部分。
l PrimitiveCount——繪製圖元的個數。
// 繪製4個三角形
_device->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 4);
DrawIndexPrimitive();//繪製緩存索引的內容
HRESULT IDirect3DDevice9::DrawIndexedPrimitive(
D3DPRIMITIVETYPE Type,
INT BaseVertexIndex,
UINT MinIndex,
UINT NumVertices,
UINT StartIndex,
UINT PrimitiveCount
);
l Type——我們繪製的圖元類型。比如,我們能繪製點和線以及三角形。以後我們使用三角形,用D3DPT_TRIANGLELIST參數。
l MinIndex——將被引用的最小索引值。
l NumVertices——在此調用中將被引用的頂點數。
l PrimitiveCount——繪製圖元的個數。
l StartIndex——索引到索引緩存中的某個位置,它標記開始渲染的開始索引點。
l BaseVertexIndex——一個基本數字,在調用中用它去加上索引。參看下面的說明。
渲染狀態:
HRESULT IDirect3DDevice9::SetRenderState(
D3DRENDERSTATETYPE State, // 更改的渲染狀態
DWORD Value // 新的狀態值
);
_device->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME);//線框模式渲染
Direct3D(一)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.