OpenGl es 2.0 Geometry instancing
j'ai 170 objets à dessiner, chacun est construire à partir de 312 points.
J'ai un objet et je suis le dessin 170 fois avec diffrent martixes, j'ai compris que je n'ai pas besoin d'appeler certaines fonctions que si je tire un par un, j'appelle donc qu'au début, cela me donne environ 5fps, je suis en utilisant non indexées triangles avec drawArrays.
if(!started)
{
glUseProgram( __programObject );
glEnableVertexAttribArray(attPosition);
glVertexAttribPointer(attPosition, 3, GL_FLOAT, GL_FALSE, 3*sizeof(float), vVertices);//3*sizeof(float)
glEnableVertexAttribArray(attNormals);
glVertexAttribPointer(attNormals, 3, GL_FLOAT, GL_FALSE, 3*sizeof(float), vNormals);//3*sizeof(float)
}
Est-il un moyen de le rendre plus rapide dans es 2.0 ? je suis arriver sur 23fps sur sgx 540,
l'abaissement de vertex détail à 36 pour objet de ne pas augmenter le taux d'armature, il y a environ 10 im /s dans des calculs de matrice(à l'échelle, de la multiplier, de traduire, de transponse, inverser) mais elles sont faites sur le cpu et je ne pense pas que de les déplacer dans des shaders est une bonne idée. Je sais que la plupart du temps est consommé sur le passage des uniformes à chaque fois. Je sais qu'il existe un moyen pour instancier des objets et de passer des uniformes et de dessiner dans un appel, mais je ne peux pas le trouver n'importe tutoriel décrivant, savez-vous où je peux le trouver?
Malheureusement,
gl_ext_draw_instanced
et gl_ext_instanced_arrays
ne sont pas disponibles sur le SGX540, uniquement sur le SGX543, 544, 554 (ce qui est connu comme le 5XT de la série distinct le 5 de la série).
OriginalL'auteur ZZZ | 2011-04-25
Vous devez vous connecter pour publier un commentaire.
essayer de comprend par personne les normales et les sommets dans un tableau comme ceci:
Dans cet exemple, j'ai un tableau de sommets et tex coords
" d'OpenGL ES 2.0 Guide de Programmation:
Que le livre a aussi des exemples d'utilisation de cette manière
le problème des différents tableaux pour les vecteurs, c'est que le GPU doit sauter d'une memomy source à l'autre pour chaque vertex. il est des opérations supplémentaires. À mon humble avis
J'ai lu un article à partir d'une Nvidia gars dit toujours utilisation entrelacés sommets et triangle-bande. En raison de cache. Ils ont énuméré quelques autres un autre raisons, mais la principale préoccupation était d'accès au cache. De toute façon je ne me souviens pas où j'ai vu que 🙁
peut-être que c'est en fonction du matériel de conseils, n'est-ce pas? cependant nvidia est l'un des principaux
Il n'y a rien en fonction du matériel à propos de linéarisation de données pour optimiser les performances du cache. Tout fois qu'un groupe d'instructions à exécuter sur plusieurs sources de données, il est conseillé d'intercaler des données pour l'amour de la localité de cache. Il est de bon conseil, même sur le CPU.
OriginalL'auteur Yuriy Vikulov
Vous pouvez essayer de passer votre par exemple des données par le biais d'attributs au lieu de l'uniforme. Il a aidé parfois sur le bureau OpenGL.
Donc, vertex shader ressemblera à ceci:
Et le rendu du code ressemblera à ceci:
OriginalL'auteur Sergey Khoroshavin