rez*_*eza 5 glsl uniform varying ios opengl-es-2.0
这是一个奇怪的问题.如果我尝试将统一颜色传递给片段着色器,则会出现编译错误
uniform vec4 uniformColor;
void main(){
gl_FragColor = uniformColor;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我将相同的均匀颜色传递给顶点着色器,然后通过变化将其传递给片段着色器,那么它可以正常工作.
attribute vec4 position;
uniform mat4 matrix;
uniform vec4 uniformColor;
varying vec4 fragmentColor;
void main()
{
gl_Position = matrix * position;
fragmentColor = uniformColor;
}
Run Code Online (Sandbox Code Playgroud)
和
varying lowp vec4 fragmentColor;
void main()
{
gl_FragColor = fragmentColor;
}
Run Code Online (Sandbox Code Playgroud)
这是在iOS上.
我有点困惑,因为从网上复制和粘贴示例会给我带来错误.
小智 4
OpenGL ES 中的片段着色器没有默认的浮点精度限定符。使用任何浮点指针变量都需要精度限定符 - 无论它是统一变量、变化变量还是局部变量。顶点着色器有默认精度,因此您不需要在其中添加任何限定符。
在 OpenGL 中,不需要精度限定符,这就是为什么您指向的示例不包含它们。
尝试将其添加到着色器的顶部,应该没问题:
precision mediump float;
Run Code Online (Sandbox Code Playgroud)