opengl - 如何将深度缓冲区复制到GPU上的纹理?

标签 opengl glsl depth

我想将当前的深度缓冲区获取到纹理,以在着色器中对其进行访问。由于各种原因,我无法进行单独的深度传递,但是需要复制已经渲染的深度。
glReadPixels会占用CPU并可能会降低性能,据我所知glBlitFramebuffer不能将颜色从深度变为深度,只能从深度变为深度。

如何在GPU上执行此操作?

最佳答案

实现此目的的现代方法是使用FBO。将颜色和深度纹理附加到其上,进行渲染,然后禁用FBO,并使用该纹理作为着色器的输入,该着色器将渲染到默认的帧缓冲区。

您需要的有关FBO的所有详细信息都可以在here中找到。

关于opengl - 如何将深度缓冲区复制到GPU上的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340724/

相关文章:

java - NATIVE_LIBRARY_NAME 无法解析或不是字段

opengl - 人眼的正确视场角是多少?

python - 如何在 Python/PyOpenGL 中对 GLfloat 类型的对象进行加法?

opengl - opengl 如何决定使用哪个 mip 级别?

function - Postgresql:插入/更新后触发函数:堆栈深度限制错误

javascript - Three.js/WebGL - 透明平面将其他平面隐藏在它们后面

没有颜色的Opengl纹理渲染

glsl - 在顶点着色器中应用 Y 旋转时纹理坐标发生偏移

opengl - 如何在 OpenGL GLSL 中导入库

python - 如何填充 kinect v1 深度图像中的黑色补丁