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