Ressources de texture (Direct3D 9)
Les ressources de texture sont implémentées dans l’interface IDirect3DTexture9. Pour obtenir un pointeur vers une interface de texture, appelez la méthode IDirect3DDevice9 ::CreateTexture ou l’une des fonctions D3DX suivantes.
- D3DXCreateTexture
- D3DXCreateTextureFromFile
- D3DXCreateTextureFromFileEx
- D3DXCreateTextureFromFileInMemory
- D3DXCreateTextureFromFileInMemoryEx
- D3DXCreateTextureFromResource
- D3DXCreateTextureFromResourceEx
L’exemple de code suivant utilise D3DXCreateTextureFromFile pour charger une texture à partir de Tiger.bmp.
// The following code example assumes that D3dDevice
// is a valid pointer to an IDirect3DDevice9 interface.
LPDIRECT3DTEXTURE9 pTexture;
D3DXCreateTextureFromFile( d3dDevice, "tiger.bmp", &pTexture);
Le premier paramètre qui D3DXCreateTextureFromFile accepte est un pointeur vers une interface IDirect3DDevice9. Le deuxième paramètre indique à Direct3D le nom du fichier à partir duquel charger la texture. Le troisième paramètre prend l’adresse d’un pointeur vers une interface IDirect3DTexture9 représentant l’objet de texture créé.
Rendu avec des ressources de texture
Direct3D prend en charge plusieurs fusions de textures par le biais du concept d’étapes de texture. Chaque étape de texture contient une texture et des opérations qui peuvent être effectuées sur la texture. Les textures des étapes de texture forment l’ensemble des textures actuelles. Pour plus d’informations, consultez fusion de textures (Direct3D 9). L’état de chaque texture est encapsulé dans sa phase de texture.
Dans une application C++, l’état de chaque texture doit être défini avec la méthode IDirect3DDevice9 ::SetTextureStageState. Passez le numéro d’étape (0-7) comme valeur du premier paramètre. Définissez la valeur du deuxième paramètre sur un membre du type énuméré D3DTEXTURESTAGESTATETYPE. Le paramètre final est la valeur d’état de l’état de texture particulier.
À l’aide de pointeurs d’interface de texture, votre application peut afficher un mélange allant jusqu’à huit textures. Définissez les textures actuelles en appelant la méthode IDirect3DDevice9 ::SetTexture. Direct3D fusionne toutes les textures actuelles sur les primitives qu’il restitue.
Note
La méthode IDirect3DDevice9 ::SetTexture incrémente le nombre de références de la surface de texture affectée. Lorsque la texture n’est plus nécessaire, vous devez définir la texture à l’étape appropriée pour NULL. Si vous ne parvenez pas à le faire, la surface ne sera pas libérée, ce qui entraîne une fuite de mémoire.
Votre application peut définir l’état d’habillage de texture pour les textures actuelles en appelant la méthode IDirect3DDevice9 ::SetRenderState. Transmettez une valeur de D3DRS_WRAP0 à D3DRS_WRAP7 comme valeur du premier paramètre et utilisez une combinaison des D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 et D3DWRAPCOORD_3 indicateurs pour activer l’habillage dans les directions u, v ou w.
Votre application peut également définir les états de perspective de texture et de filtrage de texture. Voir filtrage de textures (Direct3D 9).
Rubriques connexes