在iOS設備(iPad)上,我決定將我的渲染緩衝區的存儲從支持視圖的CAEAGLLayer更改爲通過glRenderbufferStorage顯式存儲。可悲的是,以下代碼未能導致有效的FBO。有人可以告訴我什麼,我錯過了?:爲什麼在iOS上,glRenderbufferStorage顯示失敗?
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]
正確的答案是因爲你不能用'glRenderbufferStorage(...)`調用`[context renderbufferStorage]`來調用 – bobobobo 2013-01-10 22:13:03