在 iOS 设备 (iPad) 上,我决定将渲染缓冲区的存储从支持视图的 CAEAGLLayer 更改为通过 glRenderbufferStorage 显式存储。遗憾的是,以下代码无法生成有效的 FBO。有人可以告诉我我错过了什么吗?:
glGenFramebuffers(1, &m_framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer);
glGenRenderbuffers(1, &m_colorbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, m_colorbuffer);
GLsizei width = (GLsizei)layer.bounds.size.width;
GLsizei height = (GLsizei)layer.bounds.size.height;
glRenderbufferStorage(m_colorbuffer, GL_RGBA8_OES, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorbuffer);
注意:
图层大小有效且正确。这是可靠的生产工作渲染代码。我正在做的唯一改变是这条线:
glRenderbufferStorage(...)
以前我做过:
[m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer]