我希望从我的相机视图中获取深度缓冲区,以用于3D滤镜应用程序。目前,我使用glReadPixels来获取深度分量。但是,我需要真实的深度缓冲区值,或者相机到世界坐标系中的真实距离。
我尝试通过GL_DEPTH_BIAS和GL_DEPTH_SCALE来转换深度值,但是没有成功。
glReadPixels(0, 0, width_, height_, GL_DEPTH_COMPONENT, GL_FLOAT, depth_buffer);
glGetDoublev(GL_DEPTH_BIAS, &depth_bias); // Returns 0.0
glGetDoublev(GL_DEPTH_SCALE, &depth_scale); // Returns 1.0
我知道这与从深度缓冲区获取真实的z值类似,但我想将深度值存储在主内存中,而不是在着色器中。