[NDK]从Opengles到Vulkan-进阶篇(2)-离屏渲染

这里离屏渲染当然是使用不在屏幕上进行渲染。

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

你可能感兴趣的:(计算机视觉,opengles,vulkan)