Bonjour,

débutant avec directx, j'ai crée une fonction pour charger un objet (Mesh) en me basant sur le bouquin "Beginning game programming" de Harbour.
Je travaille avec une version française de Visual Studion 2003, Directx 9 v. Octobre 2005, et pour utiliser le CSoundManager fourni par Microsoft j'ai du définir le jeu de caractère à Unicode. Ca n'a pas posé de trop gros problèmes pour modifier tous les char en wchar_t jusqu'à cette fonction.

Ci-dessous ma méthode

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
MODEL* LoadModel(wchar_t* filename)
{
    MODEL* model = (MODEL*)malloc(sizeof(MODEL)) ;
    LPD3DXBUFFER matbuffer ;
    HRESULT result ;
 
    USES_CONVERSION ;
 
    result = D3DXLoadMeshFromX(filename, D3DXMESH_SYSTEMMEM, d3ddev, NULL, &matbuffer, NULL, &model->material_count, &model->mesh) ;
 
    if (result != D3D_OK)
        return NULL ;
 
    LPD3DXMATERIAL d3dxMaterials = (LPD3DXMATERIAL)matbuffer->GetBufferPointer() ;
    model->materials = new D3DMATERIAL9[model->material_count] ;
    model->textures  = new LPDIRECT3DTEXTURE9[model->material_count] ;
 
    //create the materials and textures
    for(DWORD i = 0 ; i < model->material_count ; i++)
    {
        model->materials[i] = d3dxMaterials[i].MatD3D ;
        model->materials[i].Ambient = model->materials[i].Diffuse ;
 
        model->textures[i] = NULL ;
        if(d3dxMaterials[i].pTextureFilename != NULL)
        {
			result = D3DXCreateTextureFromFile(d3ddev, A2CW(d3dxMaterials[i].pTextureFilename), &model->textures[i]) ;
 
            if (result != D3D_OK)
				return NULL ;
        }
    }
 
    matbuffer->Release() ;
 
    return model ;
}
la structure MODEL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
struct MODEL
{
	LPD3DXMESH mesh ;
	D3DMATERIAL9* materials ;
	LPDIRECT3DTEXTURE9* textures ;
	DWORD material_count ;
} ;
Le problème : l'appel à la fonction D3DXCreateTextureFromFile(d3ddev, A2CW(d3dxMaterials[i].pTextureFilename), &model->textures[i]) ; ne me retourne jamais D3D_OK, échec à chaque fois. J'ai essayé avec les modèles tiger, airplane et landshark fournis dans le sdk, toujours la même chose.

Je suppose que l'erreur provient de ma conversion avec la macro A2CW, mais je n'en suis pas sur.

Quelqu'un a une idée ?

Merci