opengl es 2.0 Renderbuffer的问题

shaojieli 2013-12-10 05:35:25
GLint iWidth = 0;
GLint iHeight = 0;

iWidth = self.frame.size.width;
iHeight = self.frame.size.height;
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, iWidth, iHeight);
// [_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];


其中红颜色的两行中,用上面那行,绘制的内容就显示不出来;用下面那行,绘制的内容就能显示出来,大家帮忙看一下,什么原因啊?
...全文
264 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaojieli 2013-12-11
  • 打赏
  • 举报
回复
感谢楼上的回答! 我现在就是想作离屏渲染,然后把离屏渲染的结果显示到屏幕上,不知道该怎样做?
- (void)setupMemRenderBuffer {
    glGenRenderbuffers(1, &_memRenderBuffer);
    glBindRenderbuffer(GL_RENDERBUFFER, _memRenderBuffer);
    GLint iWidth = 0;
    GLint iHeight = 0;
    
    iWidth = self.frame.size.width;
    iHeight = self.frame.size.height;
    glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8_OES, iWidth, iHeight);
//    [_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer];
}
chenqiu1024 2013-12-10
  • 打赏
  • 举报
回复
最终要把renderBuffer的内容显示在屏幕上,总会要用下面那句。上面一句一般用于做离屏渲染,把renderBuffer作为后台缓冲区用。
chenqiu1024 2013-12-10
  • 打赏
  • 举报
回复
显然喽: glRenderbufferStorage是开辟一块显存(是内存还是显存?这个还没搞清望解答)作为当前RenderBuffer的存储区,但这个仅仅是在显存里,并没跟实际显示在屏幕上的有关联; 而下一句,fromDrawable:_eaglLayer这就是说用这个_eaglLayer作为RenderBuffer的存储区,那么RenderBuffer上绘制出的东西当然就显示在这个_eaglLayer里了,这个layer是最终能显示在屏幕上的。

29,031

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧