紋理資源 (Direct3D 9)

紋理資源會在 IDirect3DTexture9 介面中實作。 若要取得紋理介面的指標,請呼叫 IDirect3DDevice9::CreateTexture 方法或任何下列任何 D3DX 函式。

下列程式碼範例會使用 D3DXCreateTextureFromFile 從 Tiger.bmp載入紋理。

// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.

LPDIRECT3DTEXTURE9 pTexture;

D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);

D3DXCreateTextureFromFile接受的第一個參數是IDirect3DDevice9介面的指標。 第二個參數會告訴 Direct3D 要從中載入紋理的檔案名。 第三個參數會採用 IDirect3DTexture9 介面指標的位址,代表所建立的紋理物件。

使用紋理資源轉譯

Direct3D 透過紋理階段的概念支援多重紋理混合。 每個紋理階段都包含了一個紋理及可以執行於該紋理之上的運算。 紋理階段中的紋理構成了現有紋理的組合。 如需詳細資訊,請參閱 紋理混合 (Direct3D 9) 。 每個紋理的狀態都封裝於其紋理階段中。

在 C++ 應用程式中,每個紋理的狀態都必須設定為 IDirect3DDevice9::SetTextureStageState 方法。 傳遞階段編號 (0-7) 作為第一個參數的值。 將第二個參數的值設定為 D3DTEXTURESTAGESTATETYPE 列舉型別的成員。 最後一個參數是特定紋理狀態的狀態值。

使用紋理介面指標,您的應用程式可以轉譯最多八個紋理的混合。 叫用 IDirect3DDevice9::SetTexture 方法來設定目前的紋理。 Direct3D 會將所有目前紋理混合到呈現的基本類型。

注意

IDirect3DDevice9::SetTexture方法會遞增所指派紋理表面的參考計數。 當不再需要紋理時,您應該將適當階段的紋理設定為 Null。 如果您無法這麼做,將不會釋放介面,導致記憶體流失。

 

您的應用程式可以呼叫 IDirect3DDevice9::SetRenderState 方法來設定目前紋理的紋理換行狀態。 將值從D3DRS_WRAP0傳遞至D3DRS_WRAP7做為第一個參數的值,並使用D3DWRAPCOORD_0、D3DWRAPCOORD_1、D3DWRAPCOORD_2和D3DWRAPCOORD_3旗標的組合,以啟用 u、v 或 w 方向的包裝。

您的應用程式也可以設定紋理透視及紋理篩選狀態。 請參閱 Direct3D 9 (紋理篩選)

Direct3D 紋理