如何在多采样纹理上渲染Framebuffer对象?

时间:2012-02-16 18:15:53

标签: opengl textures fbo multisampling

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

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:6)

  

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

再读一遍。它没有说明GL_TEXTURE_2D_MULTISAMPLE纹理。实际上,我接回来了:再次阅读该页面。如果您想获得良好的FBO信息,请阅读解释3.x行为的the page on Framebuffer Objects。您链接的页面已经过时了。

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

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

相关问题