Domanda

Sto sperimentando con shader con la lavorazione 2.0. Come un semplice expressise nella comprensione del punto shader un po 'meglio, ho implementato un sistema in cui in una classe Sprite:

    .
  1. Ho impostato un foglio di sprothes come un campionatore uniforme2d nel frammento shader. 2048x 2048 (12 x 12 fotogrammi di 128 pixel quadrati)
  2. creo un punto.
  3. I Configurazione delle coordinate UV nel vertice shader per il punto.
  4. I offsalto le coordinate UV nel vertice shader da un numero intero passarono come variabile uniforme per selezionare "fotogrammi" nel foglio di spritesheet
  5. Aggiornare il numero intero (utilizzando il modulo da loop e) incrementando l'offset UV ogni 5 fotogrammi nell'applicazione.
  6. Ciò significa che posso fare sequenze di animazione di base dall'interno del vertice shader. Non ho idea se questo è ausiliabile, ma sospetto che sarebbe meglio che possa impostare un nuovo sampler2d uniforme2d nel frammento shader ogni volta che voglio cambiare fotogrammi.

    La mia domanda è - Come posso usare questo shader su più istanze? Se voglio due degli sprite sullo schermo contemporaneamente ciascuno con valori diversi (cioè a riproduzione di diversi fotogrammi dell'animazione), come viene raggiunta senza ognuno di ognuno con i suoi punti molto proprie e quindi la propria copia del sampler2d uniforme in memoria?

    Spero che tu possa aiutare.

È stato utile?

Soluzione

Sì, questo approccio è molto meglio quindi impostare nuove trame ogni fotogramma.

Per disegnare più splitato, usa solo lo stesso programma e disegnare gli oggetti uno per uno utilizzando diverse uniformi:

1: GLUSEProgram (YourProgram);

2: ..Set Texture e UV per il primo oggetto

3: ..Draw Primo oggetto

4: ..Set New Texture (o mantenere la stessa texture è che gli spriti ci siano) ..Set the UV's per il secondo oggetto

5: ..Draw Secondo oggetto e così via

Modifica: il programma non è vincolato dalle uniformi che ne hai impostato, è sempre possibile modificare e chiamare nuovamente disegnare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top