例如,有两个对象,我从(0,0,100)到(0,0,0)看到它们。
对象1:中心的立方体(长度/宽度/高度10) 对象2:中心的球体(半径5)
然后,我只能看到立方体(此时我不考虑视野和观察体积)
因为openGL使用z-buffer算法, 在窗口的中心,像素首先具有四个深度值。 深度90(立方体的正面),深度110(立方体的背面) 深度95和105(球体)
添加:然后z-buffer仅显示立方体的颜色(深度为90,正面)
然后现在,我想获得保存在窗口中心的像素上的值4。 有没有办法获得这个价值?
答案 0 :(得分:1)
这有点倒退;像素没有深度值。基于场景中对象的深度,它们的相对位置和方向以及摄像机设置来计算像素的颜色。像素是所有这些的结果,而不是输入数据。
您可以在您感兴趣的点上执行相机变换的反转,以在场景的“空间”中获得一条线。然后,您可以通过场景中的对象与该线相交;这些交叉点出现的位置是该像素后面的对象的Z值。
但是,这一切似乎都与普通技术相反。也许如果我们知道你想要完成什么,我们可以建议一个具体的决议。
答案 1 :(得分:0)
使用以下openGL API:
以及GL_DEPTH_COMPONENT作为format
参数。返回值介于0和1之间,您必须根据查看视锥而变换。
您不会同时获得四个值。您可以单独渲染单个对象并阅读所需的不同点。