【问题标题】:Enable antialiasing in Opengl ES 2 (ios)在 Opengl ES 2 (ios) 中启用抗锯齿
【发布时间】:2014-02-12 16:20:09
【问题描述】:

我在 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);

我不清楚此时我是否已经渲染到纹理。

提前致谢!

【问题讨论】:

    标签: c++ ios opengl-es antialiasing multisampling


    【解决方案1】:

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

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

    此时您已经填充了原始缓冲区 (originalFrameBuffer),您可以随意使用它,甚至可以绑定它并继续绘制它,将其用作纹理或在苹果示例中展示它将缓冲区内容渲染到视图上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多