Zasoby tekstury (Direct3D 9)
Zasoby tekstur są implementowane w interfejsieIDirect3DTexture9. Aby uzyskać wskaźnik do interfejsu tekstury, wywołaj metodę IDirect3DDevice9::CreateTexture lub dowolną z następujących funkcji D3DX.
- D3DXCreateTexture
- D3DXCreateTextureFromFile
- D3DXCreateTextureFromFileEx
- D3DXCreateTextureFromFileInMemory
- D3DXCreateTextureFromFileInMemoryEx
- D3DXCreateTextureFromResource
- D3DXCreateTextureFromResourceEx
Poniższy przykład kodu używa D3DXCreateTextureFromFile w celu załadowania tekstury z Tiger.bmp.
// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.
LPDIRECT3DTEXTURE9 pTexture;
D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);
Pierwszy parametr, który D3DXCreateTextureFromFile akceptuje, jest wskaźnikiem do interfejsu IDirect3DDevice9. Drugi parametr informuje Direct3D nazwę pliku, z którego ma być ładowana tekstura. Trzeci parametr przyjmuje adres wskaźnika do interfejsu IDirect3DTexture9 reprezentujący utworzony obiekt tekstury.
Renderowanie przy użyciu zasobów tekstury
Funkcja Direct3D obsługuje łączenie wielu tekstur dzięki koncepcji etapów tekstury. Każdy etap tekstury zawiera teksturę i operacje, które można wykonać na teksturze. Tekstury na etapach tekstury tworzą zestaw bieżących tekstur. Aby uzyskać więcej informacji, zobacz Texture Blending (Direct3D 9). Stan każdej tekstury jest hermetyzowany na etapie tekstury.
W aplikacji języka C++ stan każdej tekstury musi być ustawiony przy użyciu metody IDirect3DDevice9::SetTextureStageState. Przekaż numer etapu (0–7) jako wartość pierwszego parametru. Ustaw wartość drugiego parametru na element członkowski typu D3DTEXTURESTAGESTATETYPE wyliczonego. Ostatnim parametrem jest wartość stanu dla określonego stanu tekstury.
Za pomocą wskaźników interfejsu tekstury aplikacja może renderować mieszankę maksymalnie ośmiu tekstur. Ustaw bieżące tekstury, wywołując metodę IDirect3DDevice9::SetTexture. Funkcja Direct3D łączy wszystkie bieżące tekstury na elementy pierwotne, które renderuje.
Nuta
Metoda IDirect3DDevice9::SetTexture zwiększa liczbę odwołań przypisanej powierzchni tekstury. Gdy tekstura nie jest już potrzebna, należy ustawić teksturę na odpowiednim etapie, aby null. Jeśli tego nie zrobisz, powierzchnia nie zostanie zwolniona, co spowoduje wyciek pamięci.
Aplikacja może ustawić stan zawijania tekstur dla bieżących tekstur, wywołując metodę IDirect3DDevice9::SetRenderState. Przekaż wartość z D3DRS_WRAP0 przez D3DRS_WRAP7 jako wartość pierwszego parametru i użyj kombinacji D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 i flag D3DWRAPCOORD_3, aby włączyć zawijanie w kierunkach u, v lub w.
Aplikacja może również ustawić perspektywę tekstury i stany filtrowania tekstur. Zobacz filtrowanie tekstur (Direct3D 9).
Tematy pokrewne