我想将当前的深度缓冲区获取到纹理,以在着色器中对其进行访问。由于各种原因,我无法进行单独的深度传递,但是需要复制已经渲染的深度。glReadPixels
会占用CPU并可能会降低性能,据我所知glBlitFramebuffer
不能将颜色从深度变为深度,只能从深度变为深度。
如何在GPU上执行此操作?
最佳答案
实现此目的的现代方法是使用FBO。将颜色和深度纹理附加到其上,进行渲染,然后禁用FBO,并使用该纹理作为着色器的输入,该着色器将渲染到默认的帧缓冲区。
您需要的有关FBO的所有详细信息都可以在here中找到。
关于opengl - 如何将深度缓冲区复制到GPU上的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340724/