2012-03-25 9 views
8

Dato il prossimo vertex shader, qual è il modo più semplice, più efficiente e più veloce per capovolgere le coordinate, in modo che lo shader di frammenti produca e capovolga l'immagine?Capovolgere vertex shader (GLES)

attribute vec4 a_position; 
attribute vec2 a_texcoord;             
varying vec2 v_texcoord; 

void main() 
{ 
    v_texcoord = a_texcoord.st; 
    gl_Position = a_position; 
} 
+0

Le coordinate di posizione del vertice o le coordinate della trama? Inoltre, non avrebbe più senso inserire questo nella trasformata che usi per quelle posizioni (supponendo che tu intenda fare qualche trasformazione). –

risposta

13

Basta capovolgere v_texcoord. Quindi ad es.

v_texcoord = a_texcoord.st * vec2(1.0, -1.0); 

Oppure, immagino:

v_texcoord = vec2(a_texcoord.s, 1.0 - a_texcoord.t); 

A seconda di cosa esattamente si vuole che accada alla gamma di .t.

+2

Eccellente! Usa "vec2 (a_texcoord.s, 1.0 - a_texcoord.t)" e funziona perfettamente. – PerracoLabs

+1

v_texcoord = vec2 (a_texcoord.s, 1.0 - a_texcoord.t); - soluzione facile e di bellezza, grazie – gbk

Problemi correlati