Télécharger le zip
salutmoi j'utilise glew pour charger les extensions,et je dois dire que pour trouver la bonne version de glext.h pour ton projet (je n'ai pas trouvé de wglext.h qui soit assez récent) j'ai mis 5 min sur googlealors que glew le premier lien sur google et c'est dans la poche
Ha ba je voulais mettre wglext (je crois que c'est ça que tu voulais dire?!) mais je pensais qu'il aurait été plus dur a trouver ;-)Merci quand meme du conseil.
Bon alors, tu peux nous expliquer ce qu'il fait de spécial ton code. Je vois juste des vbos on ne peut plus standard non ?Sinon pour ton problème:# delete [] frames;# frames = NULL;# }# //==========================================# // !!! Probléme:# glDeleteBuffersARB(1, &frames->vboVertices);# glDeleteBuffersARB(1, &frames->vboNormales);# glDeleteBuffersARB(1, &frames->vboTexCoords); Tu détruits tes vbos après avoir "delete" frames. De plus frames est un tableau, donc, tu devrais plutot avoir: if (frames) { for (int i = 0; i < numFrames; i++) { .... glDeleteBuffersARB(1, frames[i].vboVertices); glDeleteBuffersARB(1, frames[i].vboNormales); glDeleteBuffersARB(1, frames[i].vboTexCoords); } delete [] frames; frames = NULL; }
Effectivement avec: if (frames) { for (int i = 0; i < numFrames; i++) { if (frames[i].pVertices) { glDeleteBuffersARB(1, &frames[i].vboVertices); delete [] frames[i].pVertices; frames[i].pVertices = NULL; } if (frames[i].pNormales) { glDeleteBuffersARB(1, &frames[i].vboNormales); delete [] frames[i].pNormales; frames[i].pNormales = NULL; } if (frames[i].pTexCoords) { glDeleteBuffersARB(1, &frames[i].vboTexCoords); delete [] frames[i].pTexCoords; frames[i].pTexCoords = NULL; } } delete [] frames; frames = NULL; }J'ai plus de probléme merci... Mais vu que je débute en vbo je comprend pas pourquoi je fais un glDeleteBuffersARB(1, &frames[i]....); pour chaque frame vu qu'à l'initialisation j'ai créé que pour la frames[0] ?!Sinon oui ma source montre juste des vbos standard comme tu dis avec une frame, mais je voulais savoir si ya des méthode plus éfficacé (pour plus de rapidité ou qualité) voilamerci encor ;-)
glLockArraysEXT, glUnlockArraysEXT : j'ai trouvé des exemples utilisant ces fonctionsalors la je suis perdu à sa sert de les rajouté à ma source?! Je trouve par la meilleur méthode pour utilisé les vbo je trouve trop de solution differente je suis un peu perdu si quelqu'un pourrai m'aider sa serai gentil, merci ;-)
Oulala, j'avais pas vu en effet.Tu fais ca: "glGenBuffersARB(1, &frames->vboVertices);"Tu devrais faire ca: "glGenBuffersARB(1, frames[0].vboVertices);" (bien que ce soit rigoureusement équivalement)Mais il faut initialiser tous les membres de la structure quand tu la créés et pas laisser des champs indéterminés. Si tu utilises pas frames[1].vboVertices, mets lui la valeur 0:frames[1].vboVertices = 0;frames[1].vboNormales = 0;frames[1].vboTexCoords = 0;Et lors de la destruction, tu ne détruits que les vbos qui ont été créé.if (frames[i].vboVertices != 0) glDeleteBuffersARB(1, frames[i].vboVertices);if (frames[i].vboNormales != 0) glDeleteBuffersARB(1, frames[i].vboNormales);if (frames[i].vboTexCoords != 0) glDeleteBuffersARB(1, frames[i].vboTexCoords); Peut etre que la fonction glDeleteBuffers ne fait rien si l'id du buffer vaut 0 mais on sait jamais. On voit ici l'intéret d'initialiser les ids de tes vbos a 0 si tu les utilises pas.Pour les vbos en général, tu peux utiliser soit glLock/UnlockBuffer ou glBufferData. En première approche, c'est pareil. (glBufferData parfois un poil plus rapide)."glLockArraysEXT, glUnlockArraysEXT"=> Il me semble que ces fonctions ne concernent que les vertex arrays, donc pas les vbos."je trouve trop de solution differente je suis un peu perdu"=> Oui c'est le bordel. Et on peut donc te reprocher de poster une source sur les vbos sans les maitriser totalement puisque ca peut induire en erreur des personnes qui regarderaient ton code.
J'ai fais une petite erreur: "glGenBuffersARB(1, &frames[0].vboVertices);" bien sur et non:"glGenBuffersARB(1, frames[0].vboVertices);"De meme après, c'est des pointeurs que prend la fonction glDeleteBuffers:if (frames[i].vboVertices != 0) glDeleteBuffersARB(1, &frames[i].vboVertices);if (frames[i].vboNormales != 0) glDeleteBuffersARB(1, &frames[i].vboNormales);if (frames[i].vboTexCoords != 0) glDeleteBuffersARB(1, &frames[i].vboTexCoords);
Merci pour toute ces information ça va m'aider et je vais aller me documenter sur les vbo's et je reviendrais mettre à jour cette source ;-)
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 169 membres 7 nouveaux aujourd'hui 16 151 membres club