2010-12-05 4 views
1

Dites que nous voulons rendre un cube. Pour dessiner une géométrie, nous n'avons besoin que de 8 sommets. Est-il vrai que dans le cas où nous devons cartographier des textures, nous avons besoin de 24 vertices, c'est-à-dire que nous devons soumettre des sommets redondants?OpenGL ES: nombre de sommets pour les textures

Thanx

Répondre

1

Étant donné que ces sommets ont des propriétés différentes, ils ne sont pas les mêmes. Donc oui, certaines données peuvent être redondantes mais pas toutes. Normalement, la géométrie indexée peut être utilisée lorsque les vertices sont partagés entre les faces, mais dans ce cas elles ne sont pas vraiment partagées. OpenGL fournit une fonctionnalité de matrice de vertex qui pourrait être utilisée pour séparer des bits de données de sommet en morceaux indépendants. Disons que vous pouvez avoir des coordonnées dans un tableau consécutif, des couleurs dans un autre et des coordonnées de texture et dans la troisième. Les données de sommet n'ont pas besoin d'être entrelacées. Voir glVertexPointer, glColorPointer, glTexCoordPointer etc

L'utilisation de tableaux de sommets que vous pourriez économiser de la mémoire en partageant certaines des données de sommet, mais qui nécessiteraient de faire de nombreux appels de tirage et ne serait pas la peine pour ce cas simple d'un cube. This article pourrait être très utile, vérifiez-le.

+0

Connaissez-vous un cas où la géométrie indexée serait rentable? Si je comprends bien, dans une situation où vous avez un sommet partagé entre les faces, ce sommet doit être resoumis avec des données de texture différentes. – Kimi

+0

J'ai modifié la réponse s'il vous plaît vérifier. La géométrie indexée fonctionne lorsque vous avez des sommets réellement partagés, comme ceux d'un patch ou d'un quad simple, où ils décrivent une surface. – detunized

+0

@Al - Des périphériques tels que l'iPhone ont des GPU optimisés pour utiliser des bandes triangulaires indexées, et vous constatez des améliorations significatives des performances en utilisant des index si vous géométrez ces GPU. –

1

Je fournis le code d'un cube indexé et texturé pour l'iPhone here, si vous souhaitez voir un exemple de ceci en action. Même si vous n'êtes pas sur l'iPhone, cela peut aider à illustrer comment les indices peuvent réduire la taille de la géométrie pour un objet comme celui-ci. Les parties OpenGL ES du code devraient bien se traduire sur d'autres plateformes. Les indices peuvent empêcher le téléchargement de géométrie redondante (dont la taille peut être un facteur limitant sur les GPU mobiles), et les GPU comme ceux des périphériques iOS sont optimisés pour les bandes triangulaires indexées. J'ai observé quelques gains de performance significatifs en utilisant des indices pour réduire la taille de ma géométrie.

Questions connexes