Direct3DDevice8 函數數組
05-39 DrawPrimitive 詳解函數
費了好大的勁,終於搞清楚 DirectX 3D 三維圖像中 DrawPrimitive 的用法(自嘲:未必)。
DrawPrimitive 是 Direct3DDevice8 對象的一個繪圖方法:根據指定的頂點數組,繪製指定的圖形:點、線,或三角形,從而組成複雜的圖像。在 VB 中用法以下:
DrawPrimitive PrimitiveType, StartVertex, PrimitiveCount
參數說明:
StartVertex:Long 類型,指定從哪一個頂點開始繪製圖形
PrimitiveCount:Long 類型,指定繪製的圖形個數
PrimitiveType: CONST_D3DPRIMITIVETYPE 枚舉類型,要繪製的圖形類型。共有 6 個取值:
1 D3DPT_PointList顯示全部頂點對象
2 D3DPT_LineList 不相連的線段,線段的總數 = Int(頂點數/2)
頂點連線的方式:0-1,2-3,4-5,等圖片
3 D3DPT_LineStrip首尾相連的線段,線段的總數 = 頂點數-1
頂點連線的方式:0-1,1-2,2-3,3-4,4-5,等ip
4 D3DPT_TriangleList 不相連的三角形,三角形總數 = Int(頂點數/3)
三角形組成的方式:0-1-2,3-4-5,等。每一個三角形的的第三個點應在前兩個點順時針方向的一側,不然會忽略此三角形。
下圖中的0-1-2三角形,假定一人站在點0,面向點1,點2在順時針方向(右方),因此此三角形會正確繪出。
3-4-5三角形中,站在點3,面向點4,點5在逆時針方向(上方),因此此三角形會被忽略。it
5 D3DPT_TriangleStrip 以一條邊爲公共邊的三角形,三角形總數 = 頂點數-2
三角形組成的方式:0-1-2(順),1-2-3(逆),2-3-4(順),3-4-5(逆),4-5-6(順),等
第1個三角形的點遵循順時針原則,第2個三角形的點遵循逆時針原則,以此類推,第5個三角形應遵循順時針原則。下圖中點6在逆時針方向上,因此被忽略。List
6 D3DPT_TriangleList 以頂點0爲圓心,順時針扇形排列的一系列三角形,三角形總數 = 頂點數-2。
三角形組成的方式:0-1-2,0-2-3,0-4-5,等。三角形的點所有遵循順時針原則,不然忽略此三角形。
下圖三角形 0-6-7 中的點7在逆時針方向上,因此被忽略。0-7-8 符合順時針原則,因此也會正確繪出。
注意:以上討論基於「消隱設置」爲默認值的狀況,可更改「消隱設置」的狀態:
MyDirect3DDevice8.SetRenderState D3DRS_CULLMODE, nMode
nMode的取值:
1 D3DCULL_NONE 無背面消隱,不忽略任何三角形
2 D3DCULL_CW 順時針消隱,與上文所說效果相反
3 D3DCULL_CCW 逆時針消隱(默認,與上文所說效果同)程序
演示程序截圖:方法
用做紋理貼圖的圖片文件:紋理圖1.jpgim
原文:http://hi.baidu.com/100bd/item/516e52d9751d1356d63aae12