Bonsoir !
Voila, je me pose trois question tout bête qui ne m'étaient jamais venue à l'esprit.
Pour eviter le style "post de 3000 lignes", je post tout de suite un petit morceau de code :
/* ---------------------- Recupere les VB et IB courants ---------------------- */
if(FAILED( Mesh->GetIndexBuffer(&indexBuffer) ))
{
// Générer erreur
return(E_FAIL);
}
if(FAILED( Mesh->GetVertexBuffer(&vertexBuffer) ))
{
// Générer erreur
return(E_FAIL);
}
/* ---------------------- Lock les VB et IB récupérés ---------------------- */
WORD* ib;
if(FAILED( indexBuffer->Lock(0, 0, (void**)&ib, D3DLOCK_READONLY) ))
{
// générer erreur
return(E_FAIL);
}
CustomVertex* vb;
if(FAILED( vertexBuffer->Lock(0, 0, (void**)&vb, D3DLOCK_READONLY) ))
{
// générer erreur
return(E_FAIL);
}
Bon, 1/ vb et les ib qui sont construits par les Locks, ais-je le droit de les modifier alors que j'ai locké en readonly ?
J'imagine que ca n'a aucune importance, et que le readonly signifie juste que ca ne modifiera pas vertexBuffer et indexBuffer.
Mais j'imagine que vb et ib je peux les modifier à volonté, puisqu'apres tout se sont des tableaux "normaux", non ?
2/Je veux manipuler des std::vector plutot que des tableaux pour mes vertices et mes indices.
Si à la suite du morceau précédent je rajoute :
int maxIb = Mesh->GetNumFaces() * 3; // Trois indices par face obligatoirement
int maxVb = Mesh->GetNumVertices();
for(int i=0; i<maxIb; i++)
{
indexArray.push_back( ib[i] );
}
for(int j=0; j<maxVb; j++)
{
vertexArray.push_back( vb[j] );
}
avec vertexarray un std::vector de CustomVertex et indexArray un std::vector de WORD.
La question est : qu'est-ce que je dois alors faire de vb et ib ?
Parce que maintenant j'en ai plus besoin.
Mais, meme question qu'au petit 1/, si je les balance, ca risque pas d'affecter mon vertexBuffer et mon indexBuffer ?
J'imagine que non mains bon...
3/ Bon et pour les supprimer je fais quoi au juste ?
Heuuu quoi que je suis en train de réflechir, et ce sont des tableaux de vertex et de WORD, donc en fait ils seront detruits à la fin de la portée, non ?
J'ai vraimment un doute sur ce que je dois faire de vb et ib et ce que j'ai le droit de faire sans corrompre le programme.
En fait je rajoute la question 4/ :
C'est completement idiot ce que je fais ou pas ? Pour mon vertexArray, est-ce qu'il serait préferable de stocker des pointeurs sur des vertex, et de concerver ceux qui se trouvent dans vb du coup ?
Merci pour votre aide les amis...
