0

我在 IOS 中启用多重采样时遇到问题。

我指的是这个指南

如果您向下滚动到

清单 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);

如果此时我已经渲染到纹理,我还不是很清楚。

提前致谢!

4

1 回答 1

0

您使用与不使用多重采样时相同的代码。然后,在其渲染缓冲区上使用多重采样添加一个额外的帧缓冲区glRenderbufferStorageMultisampleAPPLE(GL_RENDERBUFFER, 4, GL_RGBA8_OES, width, height)绘制时,您需要绑定样本缓冲区而不是原始缓冲区。完成绘图后,您需要将样本缓冲区解析为原始缓冲区:

glBindFramebuffer(GL_DRAW_FRAMEBUFFER_APPLE, originalFrameBuffer);
glBindFramebuffer(GL_READ_FRAMEBUFFER_APPLE, sampleFrameBuffer);
glResolveMultisampleFramebufferAPPLE();

至此,您已经填充了原始缓冲区originalFrameBuffer( .

于 2014-02-13T08:08:18.953 回答