我在IOS中遇到多重采样问题。
我指的是guide
如果向下滚动到
清单4-5创建多重采样缓冲区
你可以清楚地看到我们需要(当然)一个解析缓冲区。但是,它在第一步中没有显示任何类型的初始化。我只需要
glGenFramebuffers(1, &resolveBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, resolveBuffer);
什么时候应该初始化我的帧缓冲区对象?
另外,最后一步对我来说并不清楚。
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER];
我应该在哪里做到这一点?它完成了什么?我想我的fbo和vbo之后的抽奖电话,但我不太确定。
有没有人可以查看某种示例项目的链接?我用谷歌搜索但我找不到任何:(
最后,我使用浮动纹理来渲染HDR图像。我必须在这条指令中保留GL_RGBA8_OES吗?
glRenderbufferStorageMultisampleAPPLE(GL_RENDERBUFFER, 4, GL_RGBA8_OES, width, height);
对我来说,如果此时我已经渲染到了纹理,那我就不太清楚了。
提前感谢!
答案 0 :(得分:0)
使用与不使用多次采样时相同的代码。然后在其渲染缓冲区glRenderbufferStorageMultisampleAPPLE(GL_RENDERBUFFER, 4, GL_RGBA8_OES, width, height)
上使用多次采样添加额外的帧缓冲区。绘制时,需要绑定样本缓冲区而不是原始缓冲区。完成绘制后,需要将样本缓冲区解析为原始缓冲区:
glBindFramebuffer(GL_DRAW_FRAMEBUFFER_APPLE, originalFrameBuffer);
glBindFramebuffer(GL_READ_FRAMEBUFFER_APPLE, sampleFrameBuffer);
glResolveMultisampleFramebufferAPPLE();
此时你已经填充了原始缓冲区(originalFrameBuffer
)并且你可以随意使用它,你甚至可以绑定它并继续绘制它,将它用作纹理或苹果示例中将其渲染缓冲区内容呈现在视图上。