Renderbuffer是可以绑定到FBO(framebuffer object)上的。当不想立即显示渲染结果时,可以创建FBO,以便读取渲染结果或对其进行附加渲染。在OpenGL ES 2.0中,FBO的工作方式是,只有一个颜色附着点可用(GL_COLOR_ATTACHMENT0 - 你的片段着色器输出变量gl_FragColor与此附着点连接),它只能附加一个纹理或渲染缓冲区。因此,回答最后一个问题,你不能同时将颜色写入renderbuffer和texture。
对于你问题的第一部分,这取决于你是否已经使用了FBO或默认的framebuffer。你可能正在寻找以下行为:
希望这个回答能对你有所帮助。
var defaultFrameBuffer: GLint = 0 glGetIntegerv(GLenum(GL_FRAMEBUFFER_BINDING), &defaultFrameBuffer)
然后在上述第3步中,将默认帧缓冲区重新绑定:glBindFramebuffer(GLenum(GL_FRAMEBUFFER), GLuint(defaultFrameBuffer))
。如您所见, defaultFrameBuffer 不为0。 - Zhao