OpenGL实现灰色滤镜效果
在OpenGL中实现灰色滤镜效果非常简单,只需要通过修改片元着色器来实现。下面是一个示例程序,使用OpenGL ES 2.0实现了灰色滤镜效果:
// 顶点着色器
attribute vec4 position;
attribute vec2 texCoord;
varying vec2 v_texCoord;
void main()
{
gl_Position = position;
v_texCoord = texCoord;
}
// 片元着色器
uniform sampler2D Texture;
varying vec2 v_texCoord;
void main()
{
vec4 color = texture2D(Texture, v_texCoord);
float gray = (color.r + color.g + color.b) / 3.0;
gl_FragColor = vec4(gray, gray, gray, color.a);
}
这个着色器将每个像素的红、绿、蓝分量取平均值,并将其设置为灰阶值。然后,将这个灰阶值分配给每个通道,来实现灰色滤镜效果。最后,将透明度设置为原始颜色的透明度。
下面是使用这个着色器的示例应用程序的代码:
#in