D3D [C++] - C++ - Programmation
Marsh Posté le 28-02-2003 à 18:46:42
Tu appelles
IDirect3DDevice9::SetTransform(D3DTS_WORLD, maMatrice)
Marsh Posté le 28-02-2003 à 19:05:59
void CMeshes::LoadFileX(char* name, LPDIRECT3DDEVICE8 TheDevice)
{
D3DXLoadMeshFromX( name, D3DXMESH_SYSTEMMEM,
g_pd3dDevice, &g_pMeshPoints,
&pD3DXMtrlBuffer, &g_dwNumMaterials,
&g_pMesh );
d3dxMaterials = (D3DXMATERIAL*)pD3DXMtrlBuffer->GetBufferPointer();
g_pMeshMaterials = new D3DMATERIAL8[g_dwNumMaterials];
g_pMeshTextures = new LPDIRECT3DTEXTURE8[g_dwNumMaterials];
for( DWORD i=0; i<g_dwNumMaterials; i++ )
{
// Copy the material
g_pMeshMaterials[i] = d3dxMaterials[i].MatD3D;
// Set the ambient color for the material (D3DX does not do this)
g_pMeshMaterials[i].Ambient = g_pMeshMaterials[i].Diffuse;
// Create the texture
if( FAILED( D3DXCreateTextureFromFile( g_pd3dDevice,
d3dxMaterials[i].pTextureFilename,
&g_pMeshTextures[i] ) ) )
{
g_pMeshTextures[i] = NULL;
}
}
// Done with the material buffer
pD3DXMtrlBuffer->Release();
}
C'est ma fonction qui charge un fichier x, ou est ce que je peux récuperer ma matrice de mon objet ?
Marsh Posté le 28-02-2003 à 19:34:44
ghiby a écrit : |
Quelle "matrice de ton objet" ?
Marsh Posté le 28-02-2003 à 19:45:44
Je souhaite faire une translation sur un objet issue de ma classe, j'ai une fonction draw, load, il me faut faire move maintenant ! Ma phrase n'est pas trés rigoureuse je te l'accorde, mais mon but est de translater une instance de ma classe CMeshes, tu me proposes d'effectuer une translation sur "maMatrice" mais je ne sais pas quel matrice utiliser.
la fonction HRESULT D3DXLoadMeshFromX(
LPSTR pFilename,
DWORD Options,
LPDIRECT3DDEVICE8 pDevice,
LPD3DXBUFFER* ppAdjacency,
LPD3DXBUFFER* ppMaterials,
PDWORD pNumMaterials,
LPD3DXMESH* ppMesh
);
stock les coordonnées de l'objet ds ppMesh si je me trompe pas, mais dois-je acceder a cette variable pour changer la position ou ya t-il une autre methode (changer ppMesh me semble pas correct non ?)
Marsh Posté le 28-02-2003 à 19:50:01
Ouhla. Faudrait que tu passes un peu de temps à etudier le principe des transformations matricielles en 3D.
Marsh Posté le 28-02-2003 à 19:53:41
lol ok ca marche, en fait je n'ai pas de bouquin et j'ai du mal à comprendre avec les quelques aides que je trouve sur le net, tu connais des cours corrects, qui me permette d'aller plus loin qu'un carré qui tourne avec une lumiere ? ou me conseilles-tu d'acheter un bouquin ?
Marsh Posté le 28-02-2003 à 20:06:39
La 2D, en VGA d'abord, puis en directDraw ne m'a pas poser de probleme, en revanche la 3D, c'est un autre morceau
Marsh Posté le 01-03-2003 à 04:58:03
ghiby a écrit : lol ok ca marche, en fait je n'ai pas de bouquin et j'ai du mal à comprendre avec les quelques aides que je trouve sur le net, tu connais des cours corrects, qui me permette d'aller plus loin qu'un carré qui tourne avec une lumiere ? ou me conseilles-tu d'acheter un bouquin ? |
Lis le programming guide du sdk Direct 3D
ils expliquent le fonctionnement du pipeline
de transformations Direct3D.
Ce n'est pas un vrai cours mais ça couvre les bases...
Sinon c'est vraiment un vaste sujet
et il vaut peut-etre mieux acheter un bouquin
ou suivre un cours si tu veux y comprendre quelque chose...
LeGreg
Marsh Posté le 28-02-2003 à 18:30:41
Bonjour,
Je suis en train de creer un moteur 3D, j'ai une classe qui charge un fichier x et l'afficher à l'écran.
J'utilise ce type de fonction :
D3DXMatrixTranslation
D3DXMatrixRotation
pour effectuer des mouvements sur la scene en entiere. COmment proceder pour changer la position d'un seul object a la fois. Quelles sont les variables a utiliser pour changer la position de mes objets.
Voici les variables de ma classe CMeshes:
LPD3DXBUFFER pD3DXMtrlBuffer;
D3DXMATERIAL* d3dxMaterials;
LPD3DXMESH g_pMesh;
D3DMATERIAL8* g_pMeshMaterials;
LPDIRECT3DTEXTURE8* g_pMeshTextures;
DWORD g_dwNumMaterials;
LPD3DXBUFFER g_pMeshPoints;
Je suis perdu aidez moi