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 que D3DXCreateTextureFromFile accepte est un pointeur vers une interface IDirect3DDevice9 . Le deuxième paramètre indique à Direct3D le nom du fichier à partir duquel la texture doit être chargée. 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 la fusion de plusieurs textures par le biais du concept de étapes de texture. Chaque étape de texture contient une texture et des opérations qui peuvent être effectuées sur la texture. Les textures dans les étapes de texture forment le jeu de textures actuelles. Pour plus d’informations, consultez Blending texture (Direct3D 9). L’état de chaque texture est encapsulé dans son étape de texture.
Dans une application C++, l’état de chaque texture doit être défini à l’aide de la méthode IDirect3DDevice9 :: SetTextureStageState . Transmettez le numéro intermédiaire (0-7) en tant que 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 pour l’état de texture particulier.
À l’aide de pointeurs d’interface de texture, votre application peut restituer une fusion 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’elle restitue.
Notes
La méthode IDirect3DDevice9 :: SetTexture incrémente le décompte de références de la surface de texture qui est assignée. Lorsque la texture n’est plus nécessaire, vous devez définir la texture à l’étape appropriée sur null. Si vous ne le faites pas, la surface n’est 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 de texture. Consultez filtrage de texture (Direct3D 9).