2009-12-10 6 views
2

Existe-t-il un format d'emballage optimal pour les tableaux de vertex sur le matériel de l'iPhone? Mes tableaux texturés (triangle) sont ordonnées:Commande optimale pour les rangées de vertex compactées sur l'iPhone

  1. Vertex (x, y, z)
  2. Vertex Normal (x, y, z)
  3. des coordonnées de texture (u, v)

C'est comme ça que je l'ai toujours fait. Les UV devraient-ils précéder les normales? Je ne suis pas sûr que ce soit important. Je suppose que les unités d'éclairage & de texturation auraient une préférence, mais je ne peux rien trouver à ce sujet. Je ne peux certainement pas détecter une différence.

Répondre

2

de l'iPhone OpenGL ES Programming Guide:

En OpenGL ES, vous permettent à chaque attribut vos besoins d'application et fournissent un pointeur sur un tableau de ce type de données . OpenGL ES vous permet de spécifier une foulée, qui offre l'application la flexibilité de fournissant plusieurs tableaux (également connu comme struct de tableaux) ou un seul tableau avec un seul format de sommet (un tableau de struct). Votre application doit utiliser un tableau de structures avec un seul format de sommet entrelacé. Les données entrelacées fournissent une meilleure localisation mémoire que en utilisant un tableau séparé pour chaque attribut .

Vous pouvez séparer les données attribut qui est mis à jour à une fréquence différent du reste de vos sommets données (tel que décrit dans « Vertex tampon Utilisation »). De même, si les données d'attribut peuvent être partagées entre deux ou plusieurs éléments de géométrie , la séparer peut réduire votre utilisation de la mémoire.

Il ne semble pas y avoir de commande préféré suggéré dans l'un des documents en cours, mais il y avait un technote (TN2230) là-bas sur le réglage OpenGL ES pour l'iPhone qui semble avoir disparu. Il avait la phrase suivante en elle:

Pour des performances optimales, entrelacer les composants individuels dans un ordre de position, Normal, Couleur, TexCoord0, TexCoord1, PointSize, Poids, MatrixIndex.

Notez que cette technote a peut-être été supprimée en raison d'informations incorrectes ou périmées qu'elle contient. Je ne sais pas si j'ai beaucoup apprécié la commande de mes objets buffer de vertex de cette façon, certainement pas autant que de simplement réduire la taille de ma géométrie en utilisant GL_SHORT au lieu de GL_FLOAT où je pouvais.

+0

Merci. Puisque je suis la suggestion démodée/révoquée et aucun remplacement n'est venu, je peux procéder avec confiance. Merci encore! – pestilence669

0

Cela ne fait aucune différence.

1

La commande des attributs de vertex n'est vraiment pertinente que sur les anciens appareils (iPhone 2G/3G et iPod touch 1G/2G) exécutant iPhone OS 3.1 ou plus tard, qui peut soumettre des données de vertex plus efficacement si la commande correspond à ce qui était auparavant dans TN2230. Cela n'augmentera pas le débit de vertex du côté GPU, mais peut entraîner une réduction de l'utilisation du processeur. Comme Brad l'observe, si vous voulez pousser plus de sommets à travers le GPU, votre meilleur pari est de les rendre plus petits.

0

Depuis l'iPhone ne dispose que d'un petit nombre d'implémentations matérielles, ne peut pas vous venez de mesurer la performance de manière empirique et savoir de quelle manière est la plus rapide pour que, dans la pratique plutôt que dans la théorie?

+0

Je n'ai pas pu détecter une différence. Il n'y avait rien de statistiquement significatif dans mes propres repères. Pourtant, je ne voulais pas casser la compatibilité future juste parce que cela n'a pas d'importance en ce moment ... mais, oui: tester les hypothèses toujours. – pestilence669

Questions connexes