2012-07-26 8 views
6

Ich habe einen OpenGL-Shader, der gl_TexCoord wie folgt verwendet. In OpenGL ES wird gl_TexCoord jedoch nicht unterstützt. Ich frage mich, was ich tun kann, um den Code umzufunktionieren, damit er mit OpenGL ES funktioniert.Was ist das Gegenstück für gl_TexCoord in OpenGL ES 2.0

void main() 
{ 
    //scene depth calculation 
    float depth = linearize(texture2D(inputImageTexture2,gl_TexCoord[0].xy).x); 
    if (depthblur) 
    { 
     depth = linearize(bdepth(gl_TexCoord[0].xy)); 
    } 

    ... 
} 

Antwort

6

Es gibt keins. Sie tun dies manuell mit einem benutzerdefinierten varying, der von Ihrem Vertex-Shader übergeben wurde. Das ist alles, was es jemals war; eine Ausgabe pro Punkt, die der Fragment-Shader verwendet hat.

+0

haben es geschafft. Was ist der Unterschied zwischen gl_TexCoord [0] und gl_TexCoord [3]? Jeder Artikel/Dokument, auf das verwiesen werden könnte, um das zu verstehen? – tom

+0

@tom: Es ist ein * Array *. Das bedeutet die '[]' - Syntax in den meisten Sprachen. –

+0

Das ist sicher. Ich habe versucht zu verstehen, wofür gl_TexCoord [0] und gl_TexCoord [3] stehen. In dem Code, den ich geerbt habe, referenzierte er gl_TexCoord [0] und gl_TexCoord [3], aber kein gl_TexCoord [1] und gl_TexCoord [2], also fragte ich mich warum. Irgendwelche Vorschläge? – tom