我有一个顶点着色器,可以在带有OpenGL的Windows上正常工作。我想在支持OpenGL ES2.0的iPad上使用相同的着色器。

着色器的编译因以下原因而失败:

Invalid storage qualifiers 'out' in global variable context

据我了解,“out”关键字需要iPad不支持的GLSL 1.5。是否存在与“out”等效的关键字,我可以使用该关键字将颜色传递到片段着色器中?
attribute vec4 vPosition;
attribute vec4 vColor;

uniform   mat4 MVP;

out vec4 pass_Color;

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

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

最佳答案

解决了!在我使用的GLSL ES 1.0中,我需要使用“可变”而不是“输入”和“输出”。这是工作的着色器:

attribute vec4 vPosition;
attribute vec4 vColor;

uniform   mat4 MVP;

varying vec4 pass_Color;

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

关于ios - GLSL ES是否等效于OpenGL GLSL 'out'关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37288013/

10-10 15:54