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 accepté par D3DXCreateTextureFromFile 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 , qui représente l’objet de texture créé.
Rendu avec des ressources de texture
Direct3D prend en charge la fusion de plusieurs 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 Texture Blending (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 . Transmettez 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 dernier paramètre 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 de huit textures au maximum. Définissez les textures actuelles en appelant la méthode IDirect3DDevice9::SetTexture . Direct3D fusionne toutes les textures actuelles sur les primitives qu’il restitue.
Notes
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 sur 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 indicateurs D3DWRAPCOORD_0, D3DWRAPCOORD_1, D3DWRAPCOORD_2 et D3DWRAPCOORD_3 pour activer l’habillage dans les directions u, v ou w.
Votre application peut également définir la perspective de texture et les états de filtrage des textures. Consultez Filtrage des textures (Direct3D 9).
Rubriques connexes