D3D x檔案結構

2021-06-03 14:19:48 字數 1289 閱讀 5527

x檔案是directx中存放mesh資料的檔案,尤其是包含動畫和蒙皮資訊的網格模型。

.x檔案是由模板(template)驅動的,模板定義了如何儲存乙個資料物件,這樣使用者便可以自己定義具體的格式。

網格中主要儲存的是對物體的點取樣資訊,所以一般會有物體取樣的頂點個數,頂點資料列表;面個數,面的資料列表的資訊。然後,為了增加取樣物體的真實性,我們還會加入物體的紋理,材質,燈光等資訊。所以,我們一般可用以下模板來定義乙個網格。對模板的內容,會在以下的x檔案格式中作介紹。

在x檔案中,一般會有如下所示的格式:

template

模板約束

根據模板約束的不同形式,我們可將模板分成以下三類:

(a). 開放式模板( open tamplate )

開放式模板指除了模板本身定義的成員變數外,我們還可以向模板中新增其他的成員變數,來達到定製模板的目的。下面是乙個開放式模板例項:

template mesh

(b). 約束模板 ( restricted tamplate )

與開放式模板相比,我們只能向約束模板中新增有限幾種型別的資料成員,這些資料型別由模板列舉出來,下面是乙個開約束模板例項:

template filesystem

(c). 封閉式模板( closed tamplate )

與上面兩種型別的模板相比,封閉式模板的資料成員是固定的,我們不能向裡面新增另外的成員。下面是乙個封閉式模板例項:

template vector // a closed template

常用的模板型別

以下是一些常用的模板型別,我做了一些簡單的注釋,詳細資料可以查directx8.0 sdk文件。

// 標題模板, 給出一些附加的x檔案資訊,如版本資訊。

template header

// 向量模板, 定義乙個向量 (x,y,z)

template vector

// 顏色模板,定義一帶alpha的顏色值

template colorrgba

// 顏色模板,定義一不帶alpha的顏色值

template colorrgb

// 材質模板,定義材質屬性

template material

// 網格面模板,定義網格中的乙個面( 即圖元,還記得網格的概念嗎)

template meshface

// 網格模板, 定義網格資料格式

template mesh

在direct9中.x檔案有49個template format ,這些template 是已定義的,可以直接填寫資料

D3DX庫的使用 D3DX初始化

自7.0版以來,directx隨d3dx direct3d擴充套件 庫一起提供。該庫提供了一組簡化的數 算,紋理和影象操作,網格操作以及著色器操作 例如編譯和裝配 相關的常見3d圖形相關操作的函式,類和介面。也就是說,d3dx包含很多功能,如何你自己實現這些功能將會比較麻煩。我們使用d3dx庫,因為...

D3D基本框架 即D3D標頭檔案分類

了dxut的結構 後,發現微軟程式設計師的編碼風格太深奧了。各種巨集定義 預編譯跳得頭暈,由於對於window api的不精通,導致寫出符合dxut風格的框架以現在的水平來看是不可能的。既然沒有弄通dxut,我也暫時不想套用了,那麼還是先自己用自己的框架來寫把。框架如下 雖然沒學會dxut,但是微軟...

DX9入門筆記1 D3D初始化

對3d程式設計期待已久,卻一直葉公好龍淺嘗輒止。近期在公司實習卻無具體的工作安排,琢磨著學習個新的手藝,就又想起了3d programming。這次從大名鼎鼎的龍書 introduction to 3d game progamming with directx 9.0 開始學起,堅持.作為入門的第一...