FBO全称frame buffer object,与系统默认帧缓冲区类似,fbo也有三个缓冲区:color,stencil,depth。fbo最精髓支持在于通过可以将opengl绘制到指定一块缓冲区上,可以是texture object,可以是render buffer object。常常采用texture作为fbo的颜色缓冲区,后续使用fbo绑定的纹理进行画图。
fbo细节详见:http://blog.csdn.net/dizuo/article/details/8364003
chrome基于多进程模式,专门有一个GPUProcess,每个tab一个进程,tab进程中专门有一个线程负责与GPU进程通信。chrome内部将网页绘制划分为很多tile(瓦片),绘制以瓦片为单位进行,每个瓦片都是fbo绘制的结果(这些都是本人的理解)。
chrome中gpu加速细节:http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
较opengl默认的帧缓冲区,基于FBO绘制还有一个优势:部分显卡支持多重采样,实现AA(抗锯齿),pc端的显卡差不多都支持,手机上还不是标准,opengles2.0 / glext.h中有类似的宏定义GL_MULTISAMPLE_BUFFER_BIT0_QCOM,只针对高通的gpu支持。
图像艺术效果加工 属于非真实感绘制 NPR(Non-photorealistic rendering)范畴,没有光照甚至只是简单的2D范围操作。
基于这个框架,艺术效果 实现通过写fragment shader脚本控制。基本的图像处理:高斯模糊,边缘检测,sobel算子,双线性模糊处理,拉普拉斯变换 都可以实现。
opengl超级宝典 [ http://www.starstonesoftware.com/OpenGL/fourthEdition.htm ]
其中第17章节的imageproc示例:SB-WinSrc\SB-WinSrc\examples\src\chapt17\imageproc
ios上的manga camera 应用,实现图像的漫画效果 堪称经典:
拍照、处理、分享、存储相关的APP近年来十分之盛行:http://www.36kr.com/p/200371.html?ref=related