Bonjour, j'ai des difficultés à faire marcher la fonction D3DXCreateTextureFromResourceEx.
Mon moteur de rendu 2D est modélisé sous la forme d'une DLL. Tout marche bien jusqu'ici mais en fait, dans chaque application que je crée avec ce moteur (et donc cette DLL), j'affiche toujours la même scène d'introduction (qui est codée dans la DLL) composée d'un sprite et d'une musique.
Jusqu'alors, je mettais le fichier contenant le sprite (ainsi que la musique mais peu importe pour elle dans un premier temps) dans le dossier de chaque application pour que ma scène d'introduction soit affichée.
Maintenant, j'aimerais essayer d'inclure directement le fichier dans la DLL, en tant que ressource donc, et laisser la DLL elle-même charger la texture pour la scène d'introduction intégrée (donc tout se passe dans la DLL).
J'utilise donc D3DXCreateTextureFromResourceEx à la place de D3DXCreateTextureFromFileEx.
J'essaye dans un premier temps avec un BITMAP créé vite fait avec VS 2005, puisqu'il n'y a rien à modifier d'après la documentation (RCDATA pour les autres fichiers).
Mais rien à faire, il ne veut pas créer la texture depuis la ressource incluse dans la DLL et ce bout de code issu de ma méthode permettant cela renvoit toujours NULL :
Comment ça marche tout ça... ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 LPDIRECT3DTEXTURE9 newTexture = NULL; if( FAILED( D3DXCreateTextureFromResourceEx( m_Device, //device DirectGraphics NULL, // HMODULE MAKEINTRESOURCE(IDB_BITMAP1), // ressource 0, 0, //si 0, DirectX prend les dimensions de la texture 1, //utilisé pour le mipmapping, 1 si non 0, //on pourra blitter sur la texture D3DFMT_A8R8G8B8, //format de couleur D3DPOOL_MANAGED, //texture chargée dans la mémoire vidéo D3DX_FILTER_NONE, // filtrage D3DX_DEFAULT, //utilisé pour le mipmapping 0xFFFF00FF, //color key: mauve NULL, NULL, //pas intéressant ici &newTexture ) //pointeur sur la texture ) ) { return NULL; } return newTexture;
Je suis perdu et on ne peut pas dire que le net regorge d'exemples à ce propos.
Partager