我使用以下代码减少或增加gl_FragColor
的亮度。
void main()
{
#ifdef SHADER_API_GLES3
vec2 uvTop = mix(_UvTopLeftRight.xy, _UvTopLeftRight.zw, gl_MultiTexCoord0.x);
vec2 uvBottom = mix(_UvBottomLeftRight.xy, _UvBottomLeftRight.zw, gl_MultiTexCoord0.x);
textureCoord = mix(uvTop, uvBottom, gl_MultiTexCoord0.y);
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
#endif
}
但是,如何更改gl_color的alpha属性?
我曾尝试通过gl_FragColor.a = 100
进行更改,但由于某些原因,它只是在创建怪异的行。
我想念东西吗?
颜色通道和alpha通道的值是[0.0,1.0]范围内的标准化浮点值。可以通过设置gl_FragColor.a
更改Alpha通道。例如:(另请参见Swizzling)
gl_FragColor.a = 0.6;
或
gl_FragColor = vec4(pow(texture(_MainTex, textureCoord).rgb, vec3(2.2)), 0.6);
请参见The OpenGL Shading Language specification:
5.5矢量和标量分量和长度
向量或标量的组成部分的名称用单个字母表示。为方便起见,根据位置,颜色或纹理坐标矢量的常用用法,几个字母与每个组件相关联。可以通过在变量名后加上句号(。),然后选择组件名来选择各个组件。
支持的组件名称是:
{x, y, z, w}
在访问代表点或法线的向量时很有用[
{r, g, b, a}
在访问代表颜色的矢量时很有用[
{s, t, p, q}
在访问表示纹理坐标的矢量时很有用/>]]]