我正在创建一个延迟渲染器并尝试使用 FBO 来实现这一点。首先,我使用了 3 个不同的 FBO(gbuffer、lbuffer 和“screen”)并且它工作正常。但是,它的性能非常差。我在这里读到,仅使用一个 FBO 并使用 glFramebufferTexture2D 切换纹理要快得多。
这种技术的问题是我从深度纹理中得到了大量无法解释和不可预测的行为(我正在进行深度剥离,因此在两个深度纹理之间切换)。似乎每次我从深度纹理 A 切换到纹理 B 时,A 都会被清除为零,反之亦然。
有谁知道使用 glFramebufferTexture2D 为同一个 FBO 切换深度纹理是否存在问题?我正在使用 gDebugger 检查纹理。
我正在使用 Visual C++ 2010 进行开发。