2011-05-25 94 views
4

着色器不能从帧缓冲区读取数据,它们只能通过渲染管线传递数据。但是对于后期处理,需要读取渲染图像。如何在OpenGL中使用着色器后处理图像?

我将解决这个问题如下:1)创建一个大小为视口的纹理; 2)正常地渲染图像到纹理; 3)渲染纹理到framebuffer,通过后处理着色器。

我做对了吗?是否有更有效的方法来进行后期处理?

+0

取决于后处理所需的参数。你想要整个图像被绘制为后处理开始吗? – 2011-05-25 09:49:02

+0

是的,我喜欢。例如,我想扭曲最终图像,就好像它反映在扭曲的镜子中一样。 – 2011-05-25 12:34:41

回答

5

这确实是通常的后处理方式!通过绑定第一遍FBO进行纹理渲染,然后在解除绑定FBO(即返回到默认帧缓冲区)后,将该纹理用作后期着色器的输入。