xabila
Messages postés28Date d'inscriptionlundi 14 février 2005StatutMembreDernière intervention 2 septembre 2005
-
8 mars 2005 à 14:46
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 2007
-
9 mars 2005 à 20:42
Bonjour,
Voilà j'ai implémenté un petit module à base vertexArray, sans penser
qu'un jour j'aurais besoin de rajouter du materiel à ma scène.
Et en fait , he bien tout simplement je ne vois pas comment faire pour
préciser à OpenGL d'associer tel materiel à tel triangle, vu que la
géometrie, normales et textures, sont gérés avec des VertexArrays...
Faut t'il que je passe tout en Display List car c'est impossible ou y'a t'il une solution ?
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 août 2008 8 mars 2005 à 22:29
Tu as un materiau différent pour chaque face ou tu peut les regrouper ? il me semble que tu ne peu pas dire le materiau pour chaque face (sous directX on peu pas). Le mieu je pense est davoir une liste de sous-objet coportant la liste des face et le materiau associé...
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 9 mars 2005 à 10:50
C'est possible d'avoir un seul vertexArray et X materiaux, car via la commade glDrawArray tu peux preciser quelles (en indices) geometries doivent etre renduent, par contre il faut quelles soient classées par materiaux.
Exemple :
un vertexArray comportant un triangle puis un quad, ces deux primitives ayant un materiau different :
vertexArray=[3 sommets 3D du triangle]+[4 sommet 3D du quad]
rendu :
- Activer le materiau du triangle
- glDrawArray(GL_TRIANGLES,0,3);
- Activer le materiau du quad
- glDrawArray(GL_QUAD,3,7);
et si tu te sers des autres tableaux (glNormalPointer par exemple) il faut qu'ils soient aussi construit en consequence.
@+, KeniiyK
Vous n’avez pas trouvé la réponse que vous recherchez ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 9 mars 2005 à 11:52
Ben tu devrais pas avoir de mal alors, tu remplace ta boucle "for" (j'imagine) qui trace les glDrawElement par un
for("X materials")
{
activeMaterials[X];
glDrawArray(primitives[X]);
}
"en gros"
o sinon t'as la bonne methode (fin bon moi j'utiliserai les drawArray mais c personnel)
matos 1
glDrawElements( GL_TRIANGLES, 100,GL_UNSIGNED_INT,m_ind);