作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 iOS 设备 (iPad) 上,我决定将我的渲染缓冲区的存储从支持 View 的 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]
最佳答案
在iOS中,您不能使用glRenderBufferStorage
绑定(bind)颜色附件,您需要在 View 层上向EAGLContext
请求存储。在您的 View 代码的某处,您必须使用与此类似的代码:
// First Bind a Render Buffer
glBindRenderbuffer(GL_RENDERBUFFER, m_colorBuffer);
[context renderBufferStorage:GL_RENDERBUFFER forDrawable:(CAEAGLLayer*) self.layer];
你无法避免第二行,因为 iOS 需要它,这是你指的从渲染缓冲区到层的“链接”行
关于ios - 为什么在 iOS 上,glRenderbufferStorage 似乎失败了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829665/
在 iOS 设备 (iPad) 上,我决定将我的渲染缓冲区的存储从支持 View 的 CAEAGLLayer 更改为通过 glRenderbufferStorage 的显式存储。遗憾的是,以下代码无法
It takes a target parameter, but the only viable target is GL_RENDERBUFFER. http://www.opengl.org/w
我是一名优秀的程序员,十分优秀!