Freigeben über


Texturressourcen (Direct3D 9)

Texturressourcen werden in der IDirect3DTexture9 Schnittstelle implementiert. Rufen Sie zum Abrufen eines Zeigers auf eine Texturschnittstelle die IDirect3DDevice9::CreateTexture Methode oder eine der folgenden D3DX-Funktionen auf.

Im folgenden Codebeispiel wird D3DXCreateTextureFromFile- verwendet, um eine Textur aus Tiger.bmpzu laden.

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

LPDIRECT3DTEXTURE9 pTexture;

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

Der erste Parameter, der D3DXCreateTextureFromFile akzeptiert, ist ein Zeiger auf eine IDirect3DDevice9--Schnittstelle. Der zweite Parameter weist Direct3D den Namen der Datei an, aus der die Textur geladen werden soll. Der dritte Parameter verwendet die Adresse eines Zeigers auf eine IDirect3DTexture9 Schnittstelle, die das erstellte Texturobjekt darstellt.

Rendern mit Texturressourcen

Direct3D unterstützt mehrere Texturmischungen durch das Konzept der Texturphasen. Jede Texturstufe enthält eine Textur und Vorgänge, die für die Textur ausgeführt werden können. Die Texturen in den Texturphasen bilden den Satz der aktuellen Texturen. Weitere Informationen finden Sie unter Texture Blending (Direct3D 9). Der Zustand jeder Textur wird in der Texturstufe gekapselt.

In einer C++-Anwendung muss der Zustand jeder Textur mit der IDirect3DDevice9::SetTextureStageState-Methode festgelegt werden. Übergeben Sie die Phasennummer (0-7) als Wert des ersten Parameters. Legen Sie den Wert des zweiten Parameters auf ein Element des D3DTEXTURESTAGESTATETYPE Enumerationstyps fest. Der letzte Parameter ist der Zustandswert für den bestimmten Texturzustand.

Mithilfe von Texturschnittstellenzeigern kann Ihre Anwendung eine Mischung aus bis zu acht Texturen rendern. Legen Sie die aktuellen Texturen fest, indem Sie die IDirect3DDevice9::SetTexture--Methode aufrufen. Direct3D blendet alle aktuellen Texturen auf die Grundtypen ein, die sie rendert.

Anmerkung

Die IDirect3DDevice9::SetTexture Methode erhöht die Referenzanzahl der zugewiesenen Texturoberfläche. Wenn die Textur nicht mehr benötigt wird, sollten Sie die Textur in der entsprechenden Phase auf NULL-festlegen. Wenn Sie dies nicht tun, wird die Oberfläche nicht freigegeben, was zu einem Speicherverlust führt.

 

Ihre Anwendung kann den Texturumbruchstatus für die aktuellen Texturen festlegen, indem sie die IDirect3DDevice9::SetRenderState-Methode aufrufen. Übergeben Sie einen Wert von D3DRS_WRAP0 bis D3DRS_WRAP7 als Wert des ersten Parameters, und verwenden Sie eine Kombination aus D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 und D3DWRAPCOORD_3 Flags, um den Umbruch in die Richtungen u, v oder w zu ermöglichen.

Ihre Anwendung kann auch die Texturperspektive und texturfilterungszustände festlegen. Siehe Texturfilterung (Direct3D 9).

Direct3D-Texturen