在上文末,我们已经完成了高斯模糊横向上的模糊效果,而且提到,纵向模糊要在横向模糊的结果上进行,所以为了得到横向模糊的贴图,我们使用离屏渲染。顾名思义,现在渲染的目的地不是屏幕了~一般状况下,gl是直接把渲染好的纹理绘制到屏幕缓冲区的,进而直接显示在屏幕上。但是现在,我们要把它绘制到一张纹理中,这样,就可以像操作一张普通的纹理一样,对它进行再次加工了~这里我们用到FBO技术。
FBO即Frame Buffer Object,帧缓存对象,这使得我们可以创建一个由gl控制的帧缓存。通常情况下,我们只绘制到操作系统提供的帧缓存。
渲染到纹理的大致步骤如下:
1.创建一个空的texture
2.创建FBO
3.绑定texture到FBO上
4.使用自己创建的FBO作为当前渲染的帧缓存
4.draw~
具体代码如下:
void CCEffectSprite::drawGaussianBlur()
{
CCEGLView *eglView = CCDirector::sharedDirector()->getOpenGLView();
float zoomScale = eglView->getFrameZoomFactor();
CCSize frameSize = eglView->getFrameSize();
CCSize screenBufferSize = CCSizeMake(frameSize.width*zoomScale, frameSize.height*zoomScale);
//CCLOG("frameSize : %f, %f", frameSize.width, frameSize.hei