D3DHAL_DP2INDEXEDTRIANGLELIST 結構 (d3dhal.h)
當 D3DHAL_DP2COMMAND 結構的 bCommand 成員設定為 D3DDP2OP_INDEXEDTRIANGLELIST 時,D3dDrawPrimitives2 回呼會從命令緩衝區剖析一或多個D3DHAL_DP2INDEXEDTRIANGLELIST結構,並用來使用頂點索引轉譯未連接三角形的序列。
語法
typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
WORD wV1;
WORD wV2;
WORD wV3;
WORD wFlags;
} D3DHAL_DP2INDEXEDTRIANGLELIST, *LPD3DHAL_DP2INDEXEDTRIANGLELIST;
成員
wV1
指定頂點緩衝區位置中的索引,其中包含三角形第一個頂點的座標數據。
wV2
指定頂點緩衝區位置的索引,其中包含三角形第二個頂點的座標數據。
wV3
指定頂點緩衝區位置的索引,其中包含三角形第三個頂點的座標數據。
wFlags
指定旗標,描述驅動程式應該如何呈現三角形。 這個成員可以是下列值的位 OR:
國旗 | 意義 |
---|---|
D3DTRIFLAG_EDGEENABLE1 | 當填滿模式D3DFILL_WIREFRAME時,驅動程式應該呈現 wV1 與 wV2 之間的三角形邊緣。 |
D3DTRIFLAG_EDGEENABLE2 | 當填滿模式D3DFILL_WIREFRAME時,驅動程式應該呈現 wV2 與 wV3 之間的三角形邊緣。 |
D3DTRIFLAG_EDGEENABLE3 | 當填滿模式D3DFILL_WIREFRAME時,驅動程式應該呈現 wV3 與 wV1 之間的三角形邊緣。 |
D3DTRIFLAG_EDGEENABLETRIANGLE | 當填滿模式D3DFILL_WIREFRAME時,驅動程式應該轉譯所有三角形邊緣。 |
備註
D3dDrawPrimitives2 應該處理命令緩衝區 中的 wPrimitiveCount * 3 個索引,處理 wPrimitiveCount D3DHAL_DP2INDEXEDTRIANGLELIST 結構。 wPrimitiveCount 的值是在 D3DHAL_DP2COMMAND 結構中指定。
驅動程式應該針對目前的命令,處理頂點緩衝區中的 wPrimitiveCount*3 頂點總計,每個三角形有三個頂點。 轉譯的三角形順序 (wV1₀, wV2₀, wV3₀) , (wV1₁, wV2₁, wV3₁) , ..., (wV1n, wV2 n, wV3n) , where n equals (wPrimitiveCount- 1) . 驅動程式應該根據目前的命令計算頂點位置,如下所示:
當命令D3DDP2OP_INDEXEDTRIANGLELIST時,頂點緩衝區中的索引會相對於 D3DHAL_DRAWPRIMITIVES2DATA 結構的 dwVertexOffset 成員所指定的頂點緩衝區位移。
當命令D3DDP2OP_INDEXEDTRIANGLELIST2時,有 一個D3DHAL_DP2STARTVERTEX 結構會緊接在命令緩衝區中的命令後面。 頂點緩衝區中的索引相對於 dwVertexOffset 所指定的頂點緩衝區位移,加上從 D3DHAL_DP2STARTVERTEX 結構的 wVStart 成員取得的基底位移。
下圖顯示範例命令緩衝區的一部分,其中包含D3DDP2OP_INDEXEDTRIANGLELIST命令和兩個D3DHAL_DP2INDEXEDTRIANGLELIST結構。 驅動程式應該從頂點緩衝區使用下列六個頂點繪製兩個三角形,其中已啟用所有邊緣的 ˆ': (v[3]、v[4]、v[5]) 、 (v[0]、v[1]、v[2]) 。
同樣地,下圖顯示範例命令緩衝區的一部分,其中包含D3DDP2OP_INDEXEDTRIANGLELIST2命令、D3DHAL_DP2STARTVERTEX位移,以及兩個D3DHAL_DP2INDEXEDTRIANGLELIST結構。 驅動程式應該從頂點緩衝區處理六個頂點,轉譯由 (v[5]、v[6]、v[7]) 、 (v[2]、v[3]、v[4]) 定義的兩個三角形。規格需求
需求 | 值 |
---|---|
標頭 | d3dhal.h (包含 D3dhal.h) |
另請參閱
D3DDP2OP_INDEXEDTRIANGLELIST