CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Encore une question sur les VB avec DX

saleGauss
saleGauss
Niveau 9
26 avril 2008 à 23:15:14

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...
:-)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment