2016-06-13 3 views
1

J'ai essentiellement eu la même question que le gars qui a demandé ici: Dynamically sized arrays in OpenGL ES vertex shader; used for blend shapes/morph targets. Surtout sa dernière question sans réponse me dérange aussi. Donc, je veux aussi utiliser un nombre arbitraire de formes de mélange pour chaque maillage que je suis en train de traiter. Pour l'instant, j'utilise un nombre fixe et je traite les formes comme des attributs de vertex. L'avantage ici est que j'ai toujours les données pertinentes pour le sommet actuel disponible. Maintenant, si je veux utiliser un nombre arbitraire de formes, je me suis dit que j'utiliserais les SSBO puisque leur indice est exactement ce que je veux: des données de taille dynamique. Cependant, les SSBO sont, pour autant que je sache, statiques et pour chaque sommet traité dans le shader, j'ai les données de la forme blends pour la totalité du maillage disponible. Cela signifie que je devrais introduire une sorte de compteur et essayer de choisir le morceau de données correct de mon SSBO pour chaque sommet.Open GL Shader Storage Buffer Objets pour remplacer les attributs Vertex

Est-ce que cette compréhension est correcte? Je ne suis vraiment pas sûr si c'est la solution optimale, peut-être que vous pouvez me donner quelques conseils.

Répondre

1

Oui, votre compréhension est correcte.

Vous pouvez utiliser gl_VertexID ou simplement passer un 'nombre de vertex' comme attribut pour savoir quelles données charger dans votre SSBO pour le sommet particulier que vous traitez.