Salut a tous.
Voila je fais un moteur 3d en dx9.
Voici un bout de code,en fait je devrai voir un objet 3d mais je ne vois rien.
L'objet et sa texture se chargent bien mais l'erreur doit venir de la position (camera ou objet ou la perspective).
pour la perspective:
D3DXMatrixPerspectiveFovLH( &matProj,D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
pour placer l'objet:
void PutObject(char* Object,float PosX,float PosY,float PosZ,float LookX,float LookY,float LookZ){
D3DXMatrixTranslation(&matWorld,PosX,PosY,PosZ);// ( &matWorld, timeGetTime()/150.0f );
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
}
pour la vue:
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3(0,0,-3 ),
&D3DXVECTOR3(0,0,0),
&D3DXVECTOR3( 0,1,0) );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
PutObject(Object1,0,0,5,0,0,0);
// Load the mesh from the specified file
if (FAILED(D3DXLoadMeshFromX(Object1, D3DXMESH_SYSTEMMEM,g_pd3dDevice, NULL,&pD3DXMtrlBuffer, NULL, &g_dwNumMaterials,&g_pMesh )))
{
MessageBox(NULL,"Can't load object",NULL,MB_OK);
}
D3DXMATERIAL* d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
g_pMeshMaterials = new D3DMATERIAL9[g_dwNumMaterials];
g_pMeshTextures = new LPDIRECT3DTEXTURE9[g_dwNumMaterials];
for(DWORD i=0;i<g_dwNumMaterials;i++){
g_pMeshMaterials[i] = d3dxMaterials[i].MatD3D;
g_pMeshMaterials[i].Ambient = g_pMeshMaterials[i].Diffuse;
g_pMeshTextures[i] = NULL;
if( d3dxMaterials[i].pTextureFilename != NULL && lstrlen(d3dxMaterials[i].pTextureFilename) > 0 )
{
//Créé la texture
if( FAILED(D3DXCreateTextureFromFile(g_pd3dDevice,Object2, &g_pMeshTextures[i]) ) )
{
MessageBox(NULL,"Can't load texture",NULL,MB_OK);
}
}
}
// Done with the material buffer
pD3DXMtrlBuffer->Release();
D3DXMatrixIdentity(&matWorld);
}
La fonction putobject est cencé poser l'objet 3d au coordonnees 0,0,5 mais rien ne s'affiche.
Si une personne s'y connais Merci.