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
la structure MODEL
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 ; }
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.
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 ; } ;
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
Partager