2014-09-10 2 views
0

J'ai deux façons d'envoyer deux variables à mon sommet:Opengl ES 2.0 Vertex - Quelle est la méthode la plus efficace?

A, Utilisez deux attributs pour envoyer deux variables. B, Créez deux variables en une seule, telles que 'Mix = Var1 * 100 + Var2', et envoyez seulement un attribut 'Mix' à mon vertex. Et dans le code de vertex j'utilise un calcul pour présenter 'Var1' et 'Var2'.

Je ne sais pas quel est le moyen le plus efficace (prenez moins de temps pour dessiner).

Des idées?

+2

Je ne sais pas non plus. (* Indice: le profil pour savoir *) –

+0

Sont également les variables scalaires ou vecteurs. Et s'ils sont vecteurs, quelle dimension ont-ils? – datenwolf

+0

Je pense que c'est juste Glfloat. –

Répondre

0

Si ceci est votre goulot d'étranglement pour une raison extrêmement étrange, vous pourriez profiler les 2 approches sur un grand nombre d'itérations pour voir la différence. Vous devriez savoir que même après avoir obtenu ce résultat, vous devriez envisager de faire le même test sur différents appareils puisque la sortie peut changer principalement à cause de différents GPU. Si vous choisissez d'utiliser l'approche B, vous devez probablement entrer une valeur entière et, au lieu de la multiplier et la diviser par 100, essayez d'utiliser les opérations au niveau du bit comme dans Var1<<16 + Var2 pour les entiers 32 bits. Cela signifie qu'une valeur prendra les 16 premiers bits et l'autre les 16 bits suivants et ces opérations sont extrêmement rapides.

Depuis que vous avez posé cette question, il suggère que cette opération n'est pas votre goulot d'étranglement et ne le sera jamais, vous demandez simplement parce que vous voulez que votre code soit rapide. Si cela est vrai alors ne vous embêtez pas avec les performances de vitesse de cet algorithme, mais plutôt demandez-vous comment votre code sera plus maintenable. L'approche A semble être beaucoup plus simple, rendra le code lisible et maintenable, donc je choisirais celui-là. De plus, si vous décidez à un moment donné que ces valeurs deviendront trop grandes pour contenir 2 en 1, vous aurez tout un problème pour convertir le code de B vers A; Si vous utilisez A et que vous voulez un gain de performance supplémentaire (en supposant que B soit plus rapide), il vous suffit d'écrire ces 2 lignes d'algorithme et de commenter un attribut supplémentaire. Donc, dans cette perspective, vous devez choisir A.

Questions connexes