片段着色器的输出作为纹理

时间:2012-06-27 12:27:14

标签: opengl shader jogl

片段着色器出现问题, 这是我的情况:

我有一个3d场景,中间有一个简单的2d方块,代表墙(“GL.GL_QUADS”)。 我使用“glu.gluLookAt”函数移动虚拟相机。

我为墙壁实现了一个简单的片段着色器,它基本上改变了墙壁的颜色,从墙壁到虚拟摄像机的距离(使用dFdx和dFdy)。

问题是,我想将输出存储在缓冲区或纹理中,而不是在墙上显示着色器的输出。

我尝试使用“gl.glBindFramebufferEXT”,但在这种情况下,输出是虚拟场景的整个渲染,而不仅仅是指向墙壁的着色器的输出。

那么如何在没有“提取”所有渲染场景的情况下“仅提取”引用GL_QUADS的片段着色器的输出?

1 个答案:

答案 0 :(得分:2)

您需要设置正射投影并仅渲染FBO所需的四边形(或仅渲染四边形的屏幕)。然后,渲染场景,将FBO的内容绑定为纹理。