我有一个顶点着色器,可以在Windows上使用OpenGL正常工作。我想在支持OpenGL ES2.0的iPad上使用相同的着色器。
着色器的编译失败了:
Invalid storage qualifiers 'out' in global variable context
根据我的阅读,'out'关键字需要GLSL 1.5,iPad不支持。是否有一个与'out'相同的关键字可用于将颜色传递给我的片段着色器?
attribute vec4 vPosition;
attribute vec4 vColor;
uniform mat4 MVP;
out vec4 pass_Color;
void main()
{
gl_Position = MVP * vPosition;
pass_Color = vColor;
}
我使用这个顶点着色器来创建渐变混合,因此我为三角形的每个顶点指定一种颜色,然后片段着色器在每个顶点之间插入颜色。这就是为什么我没有直接将颜色直接传递到片段着色器中。
答案 0 :(得分:1)
解决!在我使用的GLSL ES 1.0中,我需要使用'变化'而不是'和' out'。这是工作着色器:
attribute vec4 vPosition;
attribute vec4 vColor;
uniform mat4 MVP;
varying vec4 pass_Color;
void main()
{
gl_Position = MVP * vPosition;
pass_Color = vColor;
}