我有一个简单的程序,只需加载一个着色器并绘制一个三角形条。
当我使用以下片段着色器
时precision mediump float;
varying vec2 v_Position;
uniform float u_Intensity;
uniform vec2 u_Range;
uniform vec2 u_Touch;
void main()
{
gl_FragColor = vec4 (v_Position.x / 300.0, 0.0, 0.0, 1.0);
return;
}
我在条带中得到一个很好的渐变(v_Position设置为我在顶点着色器中传入的位置)。
当我使用以下片段着色器
时precision mediump float;
varying vec2 v_Position;
uniform float u_Intensity;
uniform vec2 u_Range;
uniform vec2 u_Touch;
void main()
{
gl_FragColor = vec4 (u_Range.x / 300.0, 0.0, 0.0, 1.0);
return;
}
我得到一个纯色条(此时u_Range.x是常量)
然而,当我尝试将两者结合起来时:
precision mediump float;
varying vec2 v_Position;
uniform float u_Intensity;
uniform vec2 u_Range;
uniform vec2 u_Touch;
void main()
{
if (v_Position.x < u_Range.x)
{
gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);
return;
}
else
{
gl_FragColor = vec4 (u_Range.x / 300.0, 0.0, 0.0, 1.0);
return;
}
}
我得到垃圾......就像一条带有绿色和黑色噪音的条带。
我不确定我是否遗漏了某些东西(我现在已经盯着这段代码了一段时间)...我不太明白如何或为什么添加条件,并在两个分支中设置gl_FragColor (如果是其他的话),让我变得垃圾。