How to render Framebuffer Objects on multi-sampled textures?

﹥>﹥吖頭↗ 提交于 2019-12-07 06:32:23

问题


I currently have a rendering engine using multiple passes in which various parts of the image are rendered on textures, and then combined using shaders. It works, and now I would like to activate multi-sampling.

I read here ( http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA ) that, with OpenGL, you can't attach a GL_TEXTURE2D_MULTISAMPLE to a framebuffer object.

It seems one way to use multi-sampling and still have access to the result as texture is to use a multi-sampled render buffer, and then copy the result into a multisample texture.

My question is: what would be the best way to go forward?

  • Is it possible to render in a render buffer and use the output in my shader, without copying into a texture?
  • Should I indeed copy the content of the buffer into a texture, and then use it?
  • Is there another, better, solution?

Thanks.


回答1:


I read here ( http://www.opengl.org/wiki/Framebuffer_Object_Examples#MSAA ) that, with OpenGL, you can't attach a GL_TEXTURE2D_MULTISAMPLE to a framebuffer object.

Read it again. It says nothing about GL_TEXTURE_2D_MULTISAMPLE textures. Actually, I take that back: don't read that page again. If you want good FBO info, read the page on Framebuffer Objects that explains 3.x behavior. The page you linked to is old.

Back in the EXT days, all you had were multisampled renderbuffers, because multisample textures didn't exist. You could create multisampled buffers, but you couldn't texture with them. You could only blit them.

In 3.3 OpenGL, you can create multisampled textures. And you can attach them just like any other texture to an FBO.



来源:https://stackoverflow.com/questions/9316718/how-to-render-framebuffer-objects-on-multi-sampled-textures

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!