Ios GLKView,如果可能,如何使用blitFrameBuffer

Ios GLKView,如果可能,如何使用blitFrameBuffer,ios,opengl-es,Ios,Opengl Es,这是我的设置,宽度和高度是GLKView的边界*缩放 private func initFrameBuffer() -> GLuint { var framebuffer_id: GLuint = 0 glGenFramebuffers(1, &framebuffer_id) glBindFramebuffer(GLenum(GL_FRAMEBUFFER), framebuffer_id) return framebuffer_id } priva

这是我的设置,宽度和高度是GLKView的边界*缩放

private func initFrameBuffer() -> GLuint {
    var framebuffer_id: GLuint = 0
    glGenFramebuffers(1, &framebuffer_id)
    glBindFramebuffer(GLenum(GL_FRAMEBUFFER), framebuffer_id)
    return framebuffer_id
}

private func initRenderBuffer(_ width: GLsizei, _ height: GLsizei) -> GLuint {
    var renderBuffer_id: GLuint = 0
    glGenRenderbuffers(1, &renderBuffer_id)
    glBindRenderbuffer(GLenum(GL_RENDERBUFFER), renderBuffer_id)
    glRenderbufferStorage(GLenum(GL_RENDERBUFFER), GLenum(GL_RGBA8), width, height)
    glFramebufferRenderbuffer(GLenum(GL_FRAMEBUFFER), GLenum(GL_COLOR_ATTACHMENT0), GLenum(GL_RENDERBUFFER), renderBuffer_id)
    return renderBuffer_id
}

func blitz() {
    glBindFramebuffer(GLenum(GL_FRAMEBUFFER), frameBuffer)
    bindDrawable()
    glBlitFramebuffer(0, 0, width, height, 0, 0, width, height, GLbitfield(GL_COLOR_BUFFER_BIT), GLenum(GL_LINEAR))
}
我在
draw(\urect)
中调用
blitz()
,但什么也没发生,所以当我检查错误时,它会给我一个
GL\u无效的操作


我还尝试获取ios FBO的id并手动绑定它,以代替调用
bindDrawble()
,这也失败了。

glBlitFramebuffer
将当前绑定的
GL\u READ\u FRAMEBUFFER
复制到当前绑定的
GL\u DRAW\u FRAMEBUFFER
。绑定到目标
GL\u FRAMEBUFFER
是同时将FBO绑定到
GL\u READ\u FRAMEBUFFER
GL\u DRAW\u FRAMEBUFFER
的快捷方式,因此您的blit是从
FRAMEBUFFER
FRAMEBUFFER
,这是不允许的。

非常感谢您