[C++] Problème avec un membre d'une class

Problème avec un membre d'une class [C++] - Programmation

Marsh Posté le 28-11-2001 à 19:45:09    

Voilà, je voudrais copier un vertex buffer existant (Direct3D) dans un vertex buffer membre de ma class.
 
Voilà la variable et la fonction publique de celui ci:
 
LPDIRECT3DVERTEXBUFFER8 m_lpVBuffer;
 
public:
void SetVBuffer(LPDIRECT3DVERTEXBUFFER8 lpVBuffer) {m_lpVBuffer = lpVBuffer;}
 
 
Donc quand je veux l'initialiser dans ma class, je crée un vertex buffer que j'initialise avec les sommets que je veux, puis je fais:
 
Création d'un vertex buffer lpVBuffer puis je l'initialise;
object.SetVBuffer(lpVBuffer);
 
Le problème, c'est que quand j'essaie d'afficher mon objet, rien ne s'affiche à l'écran, mais si j'essaie d'afficher le vertex buffer utilisé pour initialiser ma class là l'objet s'affiche...
 
Je comprends plus rien...

Reply

Marsh Posté le 28-11-2001 à 19:45:09   

Reply

Marsh Posté le 28-11-2001 à 20:08:28    

Alload a écrit a écrit :

Voilà, je voudrais copier un vertex buffer existant (Direct3D) dans un vertex buffer membre de ma class.
Voilà la variable et la fonction publique de celui ci:
LPDIRECT3DVERTEXBUFFER8 m_lpVBuffer;
public:
void SetVBuffer(LPDIRECT3DVERTEXBUFFER8 lpVBuffer) {m_lpVBuffer = lpVBuffer;}
Donc quand je veux l'initialiser dans ma class, je crée un vertex buffer que j'initialise avec les sommets que je veux, puis je fais:
Création d'un vertex buffer lpVBuffer puis je l'initialise;
object.SetVBuffer(lpVBuffer);
Le problème, c'est que quand j'essaie d'afficher mon objet, rien ne s'affiche à l'écran, mais si j'essaie d'afficher le vertex buffer utilisé pour initialiser ma class là l'objet s'affiche...
Je comprends plus rien...  




 
Ca ne m'a pas l'air d'etre un probleme lie a ta classe.
Tu dois surement faire un truc que D3D n'aime pas..
ou fais-tu tes release()? une fois que tu as copie ton pointeur
dans ton nouvel objet qui se charge de le releaser?
 
Le type LPDIRECT3DVERTEXBUFFER8 est juste un pointeur,
donc le simple fait de l'affecter n'a aucun effet dessus.
 
A mon avis il nous manque du code pour qu'on puisse juger de la nature de ton probleme.
 
LEGREG

Reply

Marsh Posté le 28-11-2001 à 21:21:40    

Voilà le bout du code qui peut être interessant pour trouver le problème:
 
LPDIRECT3DVERTEXBUFFER8 lpVBuffer = NULL;
 
  g_lpD3DDevice->CreateVertexBuffer( 3 * pModels[i].nFaces * sizeof(SVertex), 0, D3DFVF_CUSTOM,
           D3DPOOL_DEFAULT, &lpVBuffer);
.....
Remplissage de lpVBuffer;
.....
 
  CObject object;
  object.SetMaterial(pMaterials[pModels[i].nMatRef].material);
  object.SetnFaces(pModels[i].nFaces);
  object.SetVBuffer(lpVBuffer);
 
  pFrame->AddObject(object);
 
  lpVBuffer->Release();

Reply

Marsh Posté le 28-11-2001 à 21:22:58    

Je n'avais pas fais gaffe que LPDIRECT3DVERTEXBUFFER8 n'était qu'un pointeur, cela doit surement venir de ça. Mais alors je ne sais pas comment règler le problème, comment remplir le buffer de ma class grâce à un pointeur sur un buffer temporaire?

Reply

Marsh Posté le 28-11-2001 à 22:32:06    

En fait ça marche ce que j'avais fais, l'erreur venait d'autre part... J'avais oublié de mettre à zéro un membre de ma class dans le créateur.
:)
 
Quel ane je suis desfois :D

Reply

Marsh Posté le 28-11-2001 à 22:32:32    

edit : bon ben rien :D

 

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed