OpenGL将ColorAttachment0从Renderbuffer复制到Texture2D
我正在使用 OpenTK 和 C#。 我正在渲染到渲染缓冲区,我需要将其内容(ColorAttachment0)复制到Texture2D,以便我可以对其进行一些后处理,并将其绘制到屏幕上。我该怎么做? 我会使用纹理而不是渲染缓冲区,但我需要对帧缓冲区进行抗锯齿,并且使用 GL.RenderbufferStorageMultisample 是我知道的唯一方法。
I'm using OpenTK and C#.
I'm rendering to a renderbuffer and I need to copy it's contents(ColorAttachment0) to a Texture2D so I can do some post-processing on it, and the draw it to the screen. How do I do this?
I would use texture instead of a renderbuffer, but I need to Anti-alias the framebuffer, and using GL.RenderbufferStorageMultisample is the only way I know how to.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只需创建另一个 FBO 并将纹理附加到其上即可。将多重采样 FBO 绑定到 GL_READ_FRAMEBUFFER,将纹理 FBO 绑定到 GL_DRAW_FRAMEBUFFER。然后使用正确的参数调用 glBlitFramebuffer 。这将复制并解析样本以生成非多重采样数据,并将其输出到纹理。
如果您想直接解析样本,可以使用 GL_ARB_texture_multisample 扩展。
Just create another FBO and attach the texture to it. Bind the multisampled FBO to GL_READ_FRAMEBUFFER and the texture FBO to GL_DRAW_FRAMEBUFFER. Then call glBlitFramebuffer with the correct parameters. This will copy and resolve the samples to make non-multisampled data, and output it to the texture.
If you want to resolve the samples directly, you can use the GL_ARB_texture_multisample extension.