//DownSample8.htm 下采样到1/8大小,可能丢失细节。
#version 110
#extension GL_ARB_draw_buffers : enable
uniform sampler2D texSrc;
uniform int imgH,imgW;
void main()
{
float dx = 1.0/float(imgW);
float dy = 1.0/float(imgH);
vec4 color =
texture2D(texSrc,gl_TexCoord[0].xy);
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*2.0,0.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*4.0,0.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*6.0,0.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(0.0,dy*2.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*2.0,dy*2.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*4.0,dy*2.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*6.0,dy*2.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(0.0,dy*4.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*2.0,dy*4.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*4.0,dy*4.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*6.0,dy*4.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(0.0,dy*6.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*2.0,dy*6.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*4.0,dy*6.0));
color +=
texture2D(texSrc,gl_TexCoord[0].xy+vec2(dx*6.0,dy*6.0));
color /= 16.0;
gl_FragData[0] = color;
}