据我所知,在OpenGL ES 2.0中,我们无法读取Z(depth)值。那么,我想知道如何从2D屏幕上的一个点获取3D世界坐标?
实际上,我有一些随机的想法可能会起作用。由于我们可以使用glReadPixels读取RGBA值,那么我们是否可以复制深度缓冲区并将其存储在颜色缓冲区中(例如ColorforDepth)?当然,需要一些良好的约定,以便不会丢失深度缓冲区的任何信息。然后,当我们需要一个点的世界坐标时,我们将这个ColorforDepth颜色缓冲区附加到帧缓冲区上,然后进行渲染。因此,当我们使用glReadPixels在此帧中读取深度信息时。
但是,这将导致1帧闪烁,因为colorbuffer是从深度缓冲区转换而来的奇怪缓冲区。我仍然想知道是否有一些标准方法可以在OpenGL ES 2.0中获取深度?
提前感谢您的回答! :)
实际上,我有一些随机的想法可能会起作用。由于我们可以使用glReadPixels读取RGBA值,那么我们是否可以复制深度缓冲区并将其存储在颜色缓冲区中(例如ColorforDepth)?当然,需要一些良好的约定,以便不会丢失深度缓冲区的任何信息。然后,当我们需要一个点的世界坐标时,我们将这个ColorforDepth颜色缓冲区附加到帧缓冲区上,然后进行渲染。因此,当我们使用glReadPixels在此帧中读取深度信息时。
但是,这将导致1帧闪烁,因为colorbuffer是从深度缓冲区转换而来的奇怪缓冲区。我仍然想知道是否有一些标准方法可以在OpenGL ES 2.0中获取深度?
提前感谢您的回答! :)
(1, 256, 65536, 16777216)
,然后将该向量的每个分量对1.0取模,并存储到相关的通道中。稍后你可以通过除以相关的分量和相加来重新组合。 - Tommy