[轉]DrawPrimitive 詳解Direct3DDevice8

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

相關文章
相關標籤/搜索