5

我目前有一个使用多个通道的渲染引擎,其中图像的各个部分在纹理上渲染,然后使用着色器组合。它有效,现在我想激活多重采样。

我在这里( http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA )读到,使用 OpenGL,您不能将 a 附加GL_TEXTURE2D_MULTISAMPLE到帧缓冲区对象。

似乎使用多重采样并且仍然可以访问结果作为纹理的一种方法是使用多重采样渲染缓冲区,然后将结果复制到多重采样纹理中。

我的问题是:前进的最佳方式是什么?

  • 是否可以在渲染缓冲区中渲染并使用我的着色器中的输出,而不复制到纹理中?
  • 我是否应该将缓冲区的内容复制到纹理中,然后使用它?
  • 还有其他更好的解决方案吗?

谢谢。

4

1 回答 1

6

我在这里(http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA)读到,使用 OpenGL,您不能将 GL_TEXTURE2D_MULTISAMPLE 附加到帧缓冲区对象。

再读一遍。它没有说明 GL_TEXTURE_2D_MULTISAMPLE 纹理。实际上,我收回了这一点:不要再阅读该页面。如果您想要好的 FBO 信息,请阅读解释 3.x 行为的 Framebuffer Objects 页面。您链接到的页面是旧的。

回到 EXT 时代,你所拥有的只是多重采样渲染缓冲区,因为多重采样纹理不存在。您可以创建多重采样缓冲区,但不能使用它们进行纹理处理。你只能对他们进行攻击。

在 3.3 OpenGL 中,您可以创建多重采样纹理。您可以将它们像任何其他纹理一样附加到 FBO。

于 2012-02-16T18:46:01.500 回答