赞
踩
这里实现简单的模糊效果,具体做法是在片段着色器中,从图像中读取样本时对纹理坐标进行偏移,从图像中抽出左上右下四个样本,然后在着色器中取平均值。
原图效果:
模糊系数 0.001
模糊系数0.0015
看起来就和眼睛花了一样……
片段着色器代码:
const char* fragmentShader =
{
"precision lowp float;"
"uniform sampler2D m_texture;"
"varying vec4 m_outColor;"
"varying vec2 m_outUV;"
"void main()"
"{"
" vec4 sample0,sample1,sample2,sample3;"
" float fstep=0.0015;"
" sample0=texture2D(m_texture,vec2(m_outUV.x-fstep,m_outUV.y-fstep));"
" sample1=texture2D(m_texture,vec2(m_outUV.x+fstep,m_outUV.y-fstep));"
" sample2=texture2D(m_texture,vec2(m_outUV.x+fstep,m_outUV.y+fstep));"
" sample3=texture2D(m_texture,vec2(m_outUV.x-fstep,m_outUV.y+fstep));"
" vec4 color=(sample0+sample1+sample2+sample3) / 4.0;"
" gl_FragColor=color*m_outColor;"
"}"
};
示例工程:
http://pan.baidu.com/s/1gd743Vt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。