我在IOS中启用多重采样时遇到了问题。
我指的是这个guide
如果您向下滚动到
清单4-5创建多样本缓冲区
你可以清楚地看到我们需要(当然)一个解析缓冲区。但是,它在第一步中没有显示任何类型的初始化。我是否只需要
glGenFramebuffers(1, &resolveBuffer);
glBindFramebuffer(GL_FRAMEBUFFER, resolveBuffer);我应该什么时候初始化我的帧缓冲对象?
另外,最后一步我也不清楚。
glBindRenderbuffer(GL_RENDERBUFFER, colorRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER];我应该在哪里做这件事?它能做什么呢?我猜在抽签之后,我的fbo和vbo会打电话给我,但我不是很确定。
有没有我可以查到的例子项目的链接?我用谷歌搜索了一下,但我找不到:
最后,我使用float纹理来渲染HDR图像。我必须在这条指令中保留GL_RGBA8_OES吗?
glRenderbufferStorageMultisampleAPPLE(GL_RENDERBUFFER, 4, GL_RGBA8_OES, width, height);我真的不清楚在这一点上我是否已经渲染了一个纹理。
提前感谢!
发布于 2014-02-13 16:08:19
您可以使用与不使用多重采样时相同的代码。然后在其渲染缓冲区glRenderbufferStorageMultisampleAPPLE(GL_RENDERBUFFER, 4, GL_RGBA8_OES, width, height)上使用多重采样添加额外的帧缓冲区。绘制时,需要绑定采样缓冲区,而不是原始缓冲区。绘制完成后,需要将采样缓冲区解析为原始缓冲区:
glBindFramebuffer(GL_DRAW_FRAMEBUFFER_APPLE, originalFrameBuffer);
glBindFramebuffer(GL_READ_FRAMEBUFFER_APPLE, sampleFrameBuffer);
glResolveMultisampleFramebufferAPPLE();此时你已经填充了原始的缓冲区(originalFrameBuffer),你可以随心所欲地使用它,你甚至可以绑定它并继续绘制它,使用它作为一个纹理,或者像在苹果示例中那样将它的渲染缓冲区内容呈现到视图上。
https://stackoverflow.com/questions/21733535
复制相似问题