Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1741 connectés 

  FORUM HardWare.fr
  Programmation

  [D3D] Problème avec les matériaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[D3D] Problème avec les matériaux

n°75075
Alload
Posté le 24-11-2001 à 09:28:37  profilanswer
 

J'ai une class dans laquelle se trouve les matériaux de la scène et une fonction pour afficher la scène, le problème c'est quand je passe les matériaux les objects restent blancs alors qu'en faisant des tests sur les données des matériaux, celles-ci sont bonnes.
 
Voilà le bout de code:
 
dans la class:
D3DMATERIAL8* pD3DMaterials;
 
 
 
la fonction de la class:
void CScene::RenderScene()
{
 for (unsigned short i = 0; i < nObjects; i++)
 {
  g_lpD3DDevice->SetStreamSource(0, pVBuffer[i], sizeof(SVertex));
 
  g_lpD3DDevice->SetMaterial(&pD3DMaterials[pObjects[i].nMatRef]);
 
  g_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, pObjects[i].nFaces);
 }
}

mood
Publicité
Posté le 24-11-2001 à 09:28:37  profilanswer
 

n°75076
Alload
Posté le 24-11-2001 à 09:29:13  profilanswer
 

D'où vient l'erreur d'après vous?

n°75078
youdontcar​e
Posté le 24-11-2001 à 10:19:06  profilanswer
 

le lighting est on ?
 
tes objets ont-ils bien des normales ?
 
spécifies-tu le bon vertex format ?  
 
tu mets quoi dans ta structure de matériau ?

n°75080
Alload
Posté le 24-11-2001 à 11:07:52  profilanswer
 

Mon FVF: D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_SPECULAR
 
Et pour mes matériaux, j'ai un tableau de D3DMATERIAL8 dans lequelle je met les couleurs ambientes, diffuses et speculaires.

n°75082
youdontcar​e
Posté le 24-11-2001 à 11:21:35  profilanswer
 

... as-tu créé une lumière ? :D

n°75083
Alload
Posté le 24-11-2001 à 11:44:32  profilanswer
 

Ben oui quand même.
:)
 
Nan en fait, si je crée un matériaux à la main dans ma fonction de rendu ça marche. Mais si je met le matériaux qui est dans ma class alors les objets restent blanc...
 
Je comprend pas trop...
:(

n°75084
youdontcar​e
Posté le 24-11-2001 à 12:08:07  profilanswer
 

Alload a écrit a écrit :

g_lpD3DDevice->SetMaterial(&pD3DMaterials[pObjects[i].nMatRef]);


tu n'as pas mis un pointeur de pointeur ?
 
reregarde le code de création des matériaux, mets-le ici, ...

n°75166
Alload
Posté le 24-11-2001 à 16:30:52  profilanswer
 

void CScene::LoadMaterials()
{
 ifstream file(szFilePath);
 
 bool finished = false;
 string buffer;
 unsigned short nCurrent;
 
 while (!finished)
 {
  file >> buffer;
 
  if (buffer == "*MATERIAL_COUNT" )
  {
   file >> nMaterials;
   pMaterials = new SMaterial[nMaterials];
   pD3DMaterials = new D3DMATERIAL8[nMaterials];
  }
 
  if (buffer == "*MATERIAL" )
  {
   file >> nCurrent;
   pMaterials[nCurrent].istextured = false;
   ZeroMemory(&pD3DMaterials[nCurrent], sizeof(D3DMATERIAL8));
  }
 
  if (buffer == "*MATERIAL_AMBIENT" )
  {
   file >> pD3DMaterials[nCurrent].Ambient.r;
   file >> pD3DMaterials[nCurrent].Ambient.g;
   file >> pD3DMaterials[nCurrent].Ambient.b;
   pD3DMaterials[nCurrent].Ambient.a = 1;
  }
 
  if (buffer == "*MATERIAL_DIFFUSE" )
  {
   float r, g, b;
   file >> r;
   file >> g;
   file >> b;
   pMaterials[nCurrent].diffuse[0] = (unsigned short)(r * 255);
   pMaterials[nCurrent].diffuse[1] = (unsigned short)(g * 255);
   pMaterials[nCurrent].diffuse[2] = (unsigned short)(b * 255);
 
   pD3DMaterials[nCurrent].Diffuse.r = r;
   pD3DMaterials[nCurrent].Diffuse.g = g;
   pD3DMaterials[nCurrent].Diffuse.b = b;
   pD3DMaterials[nCurrent].Diffuse.a = 1;
  }
 
  if (buffer == "*MATERIAL_SPECULAR" )
  {
   float r, g, b;
   file >> r;
   file >> g;
   file >> b;
   pMaterials[nCurrent].specular[0] = (unsigned short)(r * 255);
   pMaterials[nCurrent].specular[1] = (unsigned short)(g * 255);
   pMaterials[nCurrent].specular[2] = (unsigned short)(b * 255);
 
   pD3DMaterials[nCurrent].Specular.r = r;
   pD3DMaterials[nCurrent].Specular.g = g;
   pD3DMaterials[nCurrent].Specular.b = b;
   pD3DMaterials[nCurrent].Specular.a = 1;
  }
 
  if (buffer == "*GEOMOBJECT" )
  {
   finished = true;
  }
 }
 
 file.close();
}

n°75170
youdontcar​e
Posté le 24-11-2001 à 16:36:49  profilanswer
 

edit : je n'ai rien dit ...

 

[edtdd]--Message édité par youdontcare--[/edtdd]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [D3D] Problème avec les matériaux

 

Sujets relatifs
[D3D] Liste de sommets normales ou indexées?Heeelppppp me D3D !!
[PHP-NUKE] Probleme avec le bloc Last Links ! :([php] probleme avec mail()+multi OU cmt rediriger une page d'erreur
[ JAVA ] Servlet ? probleme de mise a jour de la Servlet sur serveur[php] probleme classique de forum : pros des regexp demandés!
Problème de Jet ....VB5 : probleme de taille avec le type CURRENCY
Probleme FSO et win 2k proMFC: Probleme !!!!
Plus de sujets relatifs à : [D3D] Problème avec les matériaux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR