2016-05-17 104 views
3

我有一个顶点着色器,可以在Windows上使用OpenGL正常工作。我想在支持OpenGL ES2.0的iPad上使用相同的着色器。GLSL ES等同于OpenGL GLSL'out'关键字?

编译着色器的失败:

Invalid storage qualifiers 'out' in global variable context 

从我已阅读,在“出”关键字所需GLSL 1.5将iPad将不会支持。是否有一个等同的关键字可用于将颜色传递到片段着色器中?

attribute vec4 vPosition; 
attribute vec4 vColor; 

uniform mat4 MVP; 

out vec4 pass_Color; 

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

该顶点着色器用于通过我创建梯度共混物,所以我分配颜色的三角形的各顶点,然后将片段着色器内插每个顶点之间的颜色。这就是为什么我没有将直接颜色直接传递给片段着色器。

+0

请注意,所有最近的iPad都支持ES 3.0,它与更新版本的桌面OpenGL更兼容。 –

+0

@ReetoKoradi我希望我拥有一个:) – SparkyNZ

回答

1

解决!在我使用的GLSL ES 1.0中,我需要使用'变化'而不是'in'和'out'。这里是工作着色器:

attribute vec4 vPosition; 
attribute vec4 vColor; 

uniform mat4 MVP; 

varying vec4 pass_Color; 

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