2016-05-17 20 views
3

Ich habe einen Vertex-Shader, der unter Windows mit OpenGL funktioniert. Ich möchte den gleichen Shader auf einem iPad verwenden, das OpenGL ES2.0 unterstützt.GLSL ES entspricht OpenGL GLSL 'out' Schlüsselwort?

Compilation des Shaders nicht mit:

Invalid storage qualifiers 'out' in global variable context 

Von dem, was ich gelesen habe, die 'out' Schlüsselwort erforderlich GLSL 1.5, die das iPad nicht unterstützt. Gibt es ein äquivalentes Schlüsselwort zu "out", das ich verwenden kann, um die Farbe in meinen Fragment-Shader zu übertragen?

attribute vec4 vPosition; 
attribute vec4 vColor; 

uniform mat4 MVP; 

out vec4 pass_Color; 

void main() 
{ 
    gl_Position = MVP * vPosition; 
    pass_Color = vColor; 
} 

Dieser Vertex-Shader wird von mir verwendete Gradienten-Mischungen zu schaffen, so dass ich eine Farbe zu jedem Eckpunkt eines Dreiecks Zuweisen und dann wird die Fragment-Shader interpolieren die Farbe zwischen jedem Scheitelpunkt. Deshalb gebe ich keine direkte Farbe direkt in den Fragment-Shader.

+0

Beachten Sie, dass alle etwas jüngeren iPads ES 3.0 unterstützen, die viel kompatibler mit neueren Versionen von Desktop-OpenGL ist. –

+0

@RetoKoradi Ich wünschte ich hätte eines :) – SparkyNZ

Antwort

1

Gelöst! In GLSL ES 1.0, die ich verwende, muss ich "variierend" statt "in" und "out" verwenden. Hier ist der Working-Shader: