Vu que je n'ai aucune réponse sur mon message , précédent je vais essayé d'être plus clair.
Ca doit être la base d'openGL , mais pourtant même aprés avoir regardé longtemps dans le guide officiel openGL . Je ne trouve pas la réponse.
Dans tous les formats 3D , il ya pas redondance des points , pour un cube il note 8 sommets et 6 normales mais pas 24 sommets et 24 normals.
Alors qu'openGL on a besoin d'attribuer si on choisit GL_QUADS 4 sommets par face , et une normale a chaque sommet.
C'est pour ca que dans le fichier collada d'exemple , il ya 6 balises avec une série d'indices(8) . Donc les 6 faces , et la série d'indices de 8 entiers correspondent à l'indice du tableau de sommet et du tableau de normales :
0(indice tab vertex) 4(indices tab normals) 2(indices tab vertex) 4(indices tab normals) ect ...
Ca permet d'éviter la redondance d'information . Mais maintenant pour le rendu dans openGL je vais pas faire une boucle avec 24 appels glVertex*() et 24 glNormals*() , ou encore dupliquer les données et mettre le tout dans un tableau entrelacé de vertex et normals donc 24*3 +24*3 de 144 cases ca me semble pas une bonne idée ..
Je suppose qu'openGL a prévu un mécanisme pour cela peutêtre avec les vertexArray : on donnne son tableau de vertex , son tableau de normals et son tableau d'indices(entrelacé) , avec glIndexPointer je suppose.Et openGL gère ca derriere d'une manière optimisé.
Ou alors peutêtre avec les VBO qui sont bcp plus récent et plus rapide apparement.
Es qu'il serait possible d'avoir un petit exemple de code(ca doit surement faire maxi 10 lignes) pour afficher un cube a partir de 8 sommets , 6 normals et un tableau d'indice qui pointe sur le tab de sommets(offset 0) et normals(offset 1) de la maniere la plus "optimisé" .
Je vous en remercie d'avance .
Partager