Share via


Texturressourcen (Direct3D 9)

Texturressourcen werden in der IDirect3DTexture9-Schnittstelle implementiert. Um einen Zeiger auf eine Texturschnittstelle abzurufen, rufen Sie die IDirect3DDevice9::CreateTexture-Methode oder eine der folgenden D3DX-Funktionen auf.

Im folgenden Codebeispiel wird D3DXCreateTextureFromFile verwendet, um eine Textur aus Tiger.bmp zu 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, den D3DXCreateTextureFromFile akzeptiert, ist ein Zeiger auf eine IDirect3DDevice9-Schnittstelle . Der zweite Parameter teilt Direct3D den Namen der Datei mit, aus der die Textur geladen werden soll. Der dritte Parameter übernimmt die Adresse eines Zeigers auf eine IDirect3DTexture9-Schnittstelle , die das erstellte Texturobjekt darstellt.

Rendern mit Texturressourcen

Direct3D unterstützt das Mischen mehrerer Texturen durch das Konzept von Texturphasen. Jede Texturphase 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 ihrer Texturphase 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 aufgezählten D3DTEXTURESTAGESTATETYPE-Typs 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 mit den Primitiven, die gerendert werden.

Hinweis

Die IDirect3DDevice9::SetTexture-Methode erhöht die Verweisanzahl 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 aufruft . Übergeben Sie einen Wert von D3DRS_WRAP0 über D3DRS_WRAP7 als Wert des ersten Parameters, und verwenden Sie eine Kombination aus den Flags D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 und D3DWRAPCOORD_3, um den Umbruch in der Richtung u, v oder w zu aktivieren.

Ihre Anwendung kann auch die Texturperspektive und den Texturfilterstatus festlegen. Siehe Texturfilterung (Direct3D 9).

Direct3D-Texturen