Salut à tous, désolé si le message n'est pas dans la bonne catégorie mais je ne savais pas où le mettre.
J'aimerais savoir quelle est la différence entre le Mesh et le MeshBuffer.
Ce que j'avais cru comprendre, c'est que le MeshBuffer faisait "parti" du Mesh, et que donc , si je voulais déplacer des points du Mesh, je devais modifier le MeshBuffer.
Est-ce que ça marche comme ça? Si oui, comment modifier le MeshBuffer et changer celui du Mesh après modification?
Si ça ne marche pas du tout comme ça, est-ce que vous pourriez m'expliquer?
Hors ligne
Oui, un maillage (mesh) est composé de plusieurs sous-maillages appellés chez Irrlicht "meshBuffer".
Souvent, attention, je suis loin d'être un pro, les maillages que j'importe sont composés de plusieurs "material" qui sont clairement des "meshBuffer" :
--> IMeshBuffer* irr::scene::IMesh::getMeshBuffer(const video::SMaterial & material)
Chez Irrlicht, je ne sais pas pour les autres moteurs graphiques, un maillage ne peut pas dépasser 65564 "index", c'est pourquoi il est pratique de composer un maillage complexe en une composition de plusieurs sous maillages ou plusieurs "material".
Donc, si tu veux modifier le maillage lui même, il faut attaquer ses sous maillages. S'il n'en y a qu'un, tu peux attaquer le sous maillage toujours présent en index "0" avec :
--> IMeshBuffer* irr::scene::IMesh::getMeshBuffer(u32 nr)const
Hou là là, j'espère ne pas avoir dit de bêtises, j'attends des précisions de mes sensei... Je sais qu'ils veillent toujours.
Dernière modification par Gehogor (14-08-2013 00:07:46)
Hors ligne
c'est ça en résumer
une fois que tu a modifier t'est mesh buffer tu call setDirty (EBT_VERTEX_AND_INDEX, EBT_VERTEX ou EBT_INDEX) suivent ce que tu a modifier
pour modifier les mesh buffers très simple ...
note IMesh et IMeshBuffer ont tout deux setDirty, l'un va renvoyer toute les données au gpu l'autre seulement une parti
ne pas oublier setHardwareMappingHint
ps: http://irrlicht.sourceforge.net/docu/cl … uffer.html
Hors ligne
Merci beaucoup pour vos réponses!
Entre temps, j'avais partiellement répondu à ma question.
Maintenant je vais pouvoir avancer mon programme
Merci
Hors ligne
Une dernière question.
Comment faire pour rendre un vertice particulier invisible?
Hors ligne
tu parcour les indices 3 par 3 et si tu rencontre l'indice équivalent au n° du vertice que tu veut suprimer tu vire les 3
après si tu veut le suprimmer du tableau des vertices, il te faut reconstruire des indices et décrémenter tout les indices > à celui que tu a suprimer
passe par SMeshBuffer tu aura access à
ça te simplifira la tâche
Hors ligne