GLSL ES相当于OpenGL GLSL'out'关键字?

时间:2016-05-17 23:52:04

标签: ios opengl opengl-es opengl-es-2.0

我有一个顶点着色器,可以在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;
}

我使用这个顶点着色器来创建渐变混合,因此我为三角形的每个顶点指定一种颜色,然后片段着色器在每个顶点之间插入颜色。这就是为什么我没有直接将颜色直接传递到片段着色器中。

1 个答案:

答案 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;
}