OpenGL简单模糊效果

这里实现简单的模糊效果,具体做法是在片段着色器中,从图像中读取样本时对纹理坐标进行偏移,从图像中抽出左上右下四个样本,然后在着色器中取平均值。


原图效果:



模糊系数 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


你可能感兴趣的:(OpenGL)