Question

J'essaie des shaders avec la transformation 2.0. En tant qu'excersion simple dans la compréhension des points de points, j'ai un peu mieux mis en place un système dans une classe Sprite:

  1. Je définissai une feuille de spritres comme un sampler2D uniforme dans le shader de fragment. 2048x 2048 (12 x 12 cadres de 128 pixels carrés)
  2. Je crée un point.
  3. i configurez les coordonnées UV dans le style Vertex Shader pour le point.
  4. i décalage des coordonnées UV dans le stylvateur Shader par un entier passé en tant que variable uniforme pour sélectionner des «cadres» dans la feuille de spritheheet
  5. i Mettez à jour l'entier (à l'aide du module à boucle et) incrémentation du décalage UV toutes les 5 images de l'application.
  6. Cela signifie que je peux faire des séquences d'animation de base à partir du Shader Vertex. Je ne sais pas si cela est souhaitable, mais je suppose que cela fonctionnerait mieux que de définir un nouveau Sampler2D uniforme dans le shader de fragment chaque fois que je veux changer de cadres.

    Ma question est - Comment puis-je utiliser ce shader sur plusieurs cas? Si je veux deux des sprites à l'écran en même temps chacun avec différentes valeurs (c'est-à-dire lire des cadres différents de l'animation) Comment cela est-il obtenu sans que chacun ait son propre pointhader et donc sa propre copie de l'uniforme Sampler2D en mémoire?

    J'espère que vous pouvez aider.

Était-ce utile?

La solution

Oui, cette approche est beaucoup mieux, puis définit de nouvelles textures chaque image.

Pour dessiner plusieurs sprites, utilisez simplement le même programme et dessinez les objets un par un à l'aide de différents uniformes:

1: GluseProgram (YourProgram);

2 :.set Texture et UV pour le premier objet

3: ..Draw premier objet

4 :.set nouvelle texture (ou garder la même texture est que les sprites sont là) ..ser les UV pour le deuxième objet

5: ..Draw second objet et ainsi de suite sur

Edit: Le programme n'est pas lié par les uniformes que vous avez définis, vous pouvez toujours changer, puis et appellez le dessin à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top