GLSL ES 等同于 OpenGL GLSL 'out' 关键字?
GLSL ES equivalent to OpenGL GLSL 'out' keyword?
我有一个顶点着色器,它在 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;
}
我使用这个顶点着色器来创建渐变混合,所以我为三角形的每个顶点分配了一种颜色,然后片段着色器在每个顶点之间插入颜色。这就是为什么我没有将直接颜色直接传递到片段着色器中的原因。
已解决!在我使用的 GLSL ES 1.0 中,我需要使用 'varying' 而不是 'in' 和 'out'。这是工作着色器:
attribute vec4 vPosition;
attribute vec4 vColor;
uniform mat4 MVP;
varying vec4 pass_Color;
void main()
{
gl_Position = MVP * vPosition;
pass_Color = vColor;
}
我有一个顶点着色器,它在 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;
}
我使用这个顶点着色器来创建渐变混合,所以我为三角形的每个顶点分配了一种颜色,然后片段着色器在每个顶点之间插入颜色。这就是为什么我没有将直接颜色直接传递到片段着色器中的原因。
已解决!在我使用的 GLSL ES 1.0 中,我需要使用 'varying' 而不是 'in' 和 'out'。这是工作着色器:
attribute vec4 vPosition;
attribute vec4 vColor;
uniform mat4 MVP;
varying vec4 pass_Color;
void main()
{
gl_Position = MVP * vPosition;
pass_Color = vColor;
}