这里离屏渲染当然是使用不在屏幕上进行渲染。
Opengles离屏渲染pbo
这里首先需要使用egl环境创建一个不绑定屏幕的EGLSurface,然后就是通过这个Surface做渲染载体了。
const EGLint pbuf_attribs[] = {
EGL_WIDTH, width,
EGL_HEIGHT, height,
EGL_NONE};
//创建离屏渲染Surface
mSurface = eglCreatePbufferSurface(mDisplay, config, pbuf_attribs);
这里使用opengl的pbo,用于包含需要绘制的内容,再将纹理传给滤镜。
初始化fbo
glGenFramebuffers(1, &fboId);
glBindFramebuffer(GL_FRAMEBUFFER, fboId);
glBindTexture(GL_TEXTURE_2D, fboTextureId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D, fboTextureId, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, options->getScaleWidth(), options->getScaleHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
E