目录
灰度
一、shader.vsh
attribute vec4 Position;
attribute vec2 TextureCoords;
varying vec2 TextureCoordsVarying;
void main (void) {
gl_Position = Position;
TextureCoordsVarying = TextureCoords;
}
二、shader.fsh
precision highp float;
uniform sampler2D Texture;
varying vec2 TextureCoordsVarying;
const highp vec3 W = vec3(0.2125, 0.7154, 0.0721);//灰度计算向量
void main (void) {
vec4 mask = texture2D(Texture, TextureCoordsVarying);//原始纹素
float luminance = dot(mask.rgb, W);//点乘后得到灰度纹素
gl_FragColor = vec4(vec3(luminance), 1.0);//内建向量赋值 透明度不变
}
颠倒
一、shader.vsh
attribute vec4 Position;
attribute vec2 TextureCoords;
varying vec2 TextureCoordsVarying;
void main (void) {
gl_Position = Position;
TextureCoordsVarying = TextureCoords;
}
二、shader.fsh
precision highp float;
uniform sampler2D Texture;
varying vec2 TextureCoordsVarying;
void main (void) {
vec4 color = texture2D(Texture, vec2(TextureCoordsVarying.x, 1.0 - TextureCoordsVarying.y));
gl_FragColor = color;
}
颠倒的处理方式有很多:
1、可以在创建纹理时,进行变换
2、可以在顶点着色器对纹理坐标进行变换
3、可以在片元着色器对纹理坐标进行变换
旋涡
一、shader.vsh
attribute vec4 Position;
attribute vec2 TextureCoords;
varying vec2 TextureCoordsVarying;
void main (void) {
gl_Position = Position;
TextureCoordsVarying = TextureCoords;
}
二、shader.fsh
行者常至,为者常成!