關於GUI設計的Directx靈活頂點格式

  在用Directx編寫GUI類時,考慮到一個問題:如何讓界面視角不發生變化?也就是說當你遊戲內的非UI部分隨着視角座標的轉換而轉換時,讓UI界面始終朝向你?

 

  一個可行的解決方法是:不讓UI界面在D3D中間進行矩陣轉換。這個方法可以通過設置靈活頂點格式(FVF)爲D3DFVF_XYZRHW來實現,下面是關於頂點格式的幾個說明(可以查看Directx的SDK,此部分內容參考過網友提供的文章,將在下一篇中轉載該網友文章):

  1. D3DFVF_XYZ:頂點的三維座標(分別是XYZ),它說明頂點有位置,將由Direct3D對其進行矩陣變換;
  2. D3DFVF_XYZRHW:RHW,與D3DFVF_XYZ不同的是:它說明頂點有位置且已經過矩陣變換,不再由Direct3D對它進行矩陣變換;
  3. D3DFVF_DIFFUSE:表示頂點格式中有漫反射顏色;
  4. D3DFVF_NORMAL:表示頂點有法線向量;
  5. D3DFVF_TEXc:表示頂點有紋理座標,c可以是1至8,表示有多少套紋理座標;

 

  在上面的幾個屬性裏,D3DFVF_XYZRHW和D3DFVF_XYZ、D3DFVF_NORMAL不能同時存在,因爲後面的兩個標誌和前面這個是有衝突的,比如以下的設置是可以的:

  1. D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;

  2. D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;

 

  我們在寫GUI類時,通常是用D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1;而在繪製遊戲場景之類的圖形時,一般用D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章