Fonction D3DXCreateTextureFromFileEx

Crée une texture à partir d’un fichier. Il s’agit d’une fonction plus avancée que D3DXCreateTextureFromFile.

Syntaxe

HRESULT D3DXCreateTextureFromFileEx(
  _In_    LPDIRECT3DDEVICE9  pDevice,
  _In_    LPCTSTR            pSrcFile,
  _In_    UINT               Width,
  _In_    UINT               Height,
  _In_    UINT               MipLevels,
  _In_    DWORD              Usage,
  _In_    D3DFORMAT          Format,
  _In_    D3DPOOL            Pool,
  _In_    DWORD              Filter,
  _In_    DWORD              MipFilter,
  _In_    D3DCOLOR           ColorKey,
  _Inout_ D3DXIMAGE_INFO     *pSrcInfo,
  _Out_   PALETTEENTRY       *pPalette,
  _Out_   LPDIRECT3DTEXTURE9 *ppTexture
);

Paramètres

pDevice [in]

Type : LPDIRECT3DDEVICE9

Pointeur vers une interface IDirect3DDevice9 , représentant l’appareil à associer à la texture.

pSrcFile [in]

Type : LPCTSTR

Pointeur vers une chaîne qui spécifie le nom de fichier. Si les paramètres du compilateur nécessitent Unicode, le type de données LPCTSTR est résolu en LPCWSTR. Sinon, le type de données de chaîne est résolu en LPCSTR. Consultez la section Notes.

Width [in]

Type : UINT

Largeur en pixels. Si cette valeur est égale à zéro ou D3DX_DEFAULT, les dimensions sont extraites du fichier et arrondies à une puissance de deux. Si l’appareil prend en charge la puissance de 2 textures et que D3DX_DEFAULT_NONPOW2 est spécifié, la taille n’est pas arrondie.

Height [in]

Type : UINT

Hauteur, en pixels. Si cette valeur est égale à zéro ou D3DX_DEFAULT, les dimensions sont extraites du fichier et arrondies à une puissance de deux. Si l’appareil prend en charge la puissance de 2 textures et que D3DX_DEFAULT_NONPOW2 est sépcifié, la taille n’est pas arrondie.

MipLevels [in]

Type : UINT

Nombre de niveaux de mip demandés. Si cette valeur est égale à zéro ou D3DX_DEFAULT, une chaîne mipmap complète est créée. Si D3DX_FROM_FILE, la taille est exactement telle qu’elle est dans le fichier, et l’appel échoue si cela viole les fonctionnalités de l’appareil.

Utilisation [in]

Type : DWORD

0, D3DUSAGE_RENDERTARGET ou D3DUSAGE_DYNAMIC. La définition de cet indicateur sur D3DUSAGE_RENDERTARGET indique que la surface doit être utilisée comme cible de rendu. La ressource peut ensuite être passée au paramètre pNewRenderTarget de la méthode SetRenderTarget . Si D3DUSAGE_RENDERTARGET ou D3DUSAGE_DYNAMIC est spécifié, Pool doit être défini sur D3DPOOL_DEFAULT et l’application doit case activée que l’appareil prend en charge cette opération en appelant CheckDeviceFormat. D3DUSAGE_DYNAMIC indique que la surface doit être gérée dynamiquement. Consultez Utilisation de textures dynamiques.

Format [in]

Type : D3DFORMAT

Membre du type énuméré D3DFORMAT , décrivant le format de pixel demandé pour la texture. La texture retournée peut avoir un format différent de celui spécifié par Format. Les applications doivent case activée le format de la texture retournée. Si D3DFMT_UNKNOWN, le format est extrait du fichier. Si D3DFMT_FROM_FILE, le format est exactement tel qu’il est dans le fichier, et l’appel échoue si cela viole les fonctionnalités de l’appareil.

Pool [in]

Type : D3DPOOL

Membre du type énuméré D3DPOOL , décrivant la classe de mémoire dans laquelle la texture doit être placée.

Filtrer [in]

Type : DWORD

Combinaison d’une ou de plusieurs constantes D3DX_FILTER contrôlant la façon dont l’image est filtrée. Spécifier D3DX_DEFAULT pour ce paramètre revient à spécifier D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER.

MipFilter [in]

Type : DWORD

Combinaison d’une ou de plusieurs constantes D3DX_FILTER contrôlant la façon dont l’image est filtrée. Spécifier D3DX_DEFAULT pour ce paramètre revient à spécifier D3DX_FILTER_BOX. En outre, utilisez les bits 27 à 31 pour spécifier le nombre de niveaux mip à ignorer (à partir du haut de la chaîne mipmap) lorsqu’une texture .dds est chargée en mémoire ; cela vous permet d’ignorer jusqu’à 32 niveaux.

ColorKey [in]

Type : D3DCOLOR

Valeur D3DCOLOR à remplacer par le noir transparent, ou 0 pour désactiver la clé de couleur. Il s’agit toujours d’une couleur ARGB 32 bits, indépendamment du format d’image source. Alpha est significatif et doit généralement être défini sur FF pour les clés de couleur opaques. Ainsi, pour le noir opaque, la valeur serait égale à 0xFF000000.

pSrcInfo [in, out]

Type : D3DXIMAGE_INFO*

Pointeur vers une structure D3DXIMAGE_INFO à remplir avec une description des données dans le fichier image source, ou NULL.

pPalette [out]

Type : PALETTEENTRY*

Pointeur vers une structure PALETTEENTRY , représentant une palette de 256 couleurs à remplir, ou NULL.

ppTexture [out]

Type : LPDIRECT3DTEXTURE9*

Adresse d’un pointeur vers une interface IDirect3DTexture9 , représentant l’objet de texture créé.

Valeur retournée

Type : HRESULT

Si la fonction réussit, la valeur de retour est D3D_OK. Si la fonction échoue, la valeur de retour peut être l’une des suivantes : D3DERR_INVALIDCALL, D3DERR_NOTAVAILABLE, D3DERR_OUTOFVIDEOMEMORY, D3DXERR_INVALIDDATA, E_OUTOFMEMORY.

Notes

Le paramètre du compilateur détermine également la version de la fonction. Si Unicode est défini, l’appel de fonction est résolu en D3DXCreateTextureFromFileExW. Sinon, l’appel de fonction est résolu en D3DXCreateTextureFromFileExA, car les chaînes ANSI sont utilisées.

Utilisez D3DXCheckTextureRequirements pour déterminer si votre appareil peut prendre en charge la texture en fonction de l’état actuel.

Cette fonction prend en charge les formats de fichier suivants : .bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm et .tga. Voir D3DXIMAGE_FILEFORMAT.

Les textures mipmappées ont automatiquement chaque niveau rempli avec la texture chargée. Lors du chargement d’images dans des textures mipmappées, certains appareils ne peuvent pas accéder à une image 1x1 et cette fonction échoue. Si cela se produit, les images doivent être chargées manuellement.

Pour obtenir de meilleures performances lors de l’utilisation de D3DXCreateTextureFromFileEx :

  1. La mise à l’échelle et la conversion de format d’image au moment du chargement peuvent être lentes. Stockez les images au format et à la résolution qu’elles seront utilisées. Si le matériel cible nécessite une alimentation de 2 dimensions, créez et stockez des images à l’aide de la puissance de 2 dimensions.
  2. Pour la création d’images mipmap au moment du chargement, filtrez à l’aide de D3DX_FILTER_BOX. Un filtre de zone est beaucoup plus rapide que d’autres types de filtres tels que D3DX_FILTER_TRIANGLE.
  3. Envisagez d’utiliser des fichiers DDS. Étant donné que les fichiers DDS peuvent être utilisés pour représenter n’importe quel format de texture Direct3D 9, ils sont très faciles à lire pour D3DX. En outre, ils peuvent stocker des mipmaps, de sorte que tous les algorithmes de génération de mipmap peuvent être utilisés pour créer les images.

Lorsque vous ignorez les niveaux mipmap lors du chargement d’un fichier .dds, utilisez la macro D3DX_SKIP_DDS_MIP_LEVELS pour générer la valeur MipFilter. Cette macro prend le nombre de niveaux à ignorer et le type de filtre et retourne la valeur de filtre, qui serait ensuite passée dans le paramètre MipFilter.

Spécifications

Condition requise Valeur
En-tête
D3dx9tex.h
Bibliothèque
D3dx9.lib

Voir aussi

D3DXCreateTextureFromFile

Fonctions de texture dans D3DX 9