绘图到FBO时可以使用默认深度缓冲区吗?

如何将默认深度缓冲区添加到FBO? 如何使用连接到FBO的深度渲染缓冲区(在绘制之后)作为默认深度缓冲区?

基本上我想为FBO和后台缓冲区渲染使用相同的深度缓冲区。

你不能。

这是devise。 OpenGL(以及更早版本的DirectX)是在窗口式应用程序真正共享相同的帧缓冲区的时代被devise出来的。 这意味着如果你有两个重叠的窗口,窗口将试图使用颜色,深度和模板缓冲区中完全相同的像素。 窗口系统通过一个硬编码的屏蔽操作来处理这个问题。

换句话说,您不拥有默认深度缓冲区,不能更改默认深度缓冲区,并且无法可靠地从OpenGL API中的默认深度缓冲区中读取。

你最好的办法是在FBO中完成所有的渲染,然后使用纹理blit将最终的图像转换为默认的FBO。