【发布时间】:2015-02-10 05:40:06
【问题描述】:
我想从深度缓冲区中读取数据。在 OS X 上的 GL 中,我可以这样做:
float depth[2][2]; // get 2x2 for bilinear interpolation
glReadPixels(s.x, s.y, /*width*/2, /*height*/2, GL_DEPTH_COMPONENT, GL_FLOAT, depth);
(请注意,使用 iOS 上的 OpenGL ES,您无法从深度缓冲区中读取数据)
Metal 的等价物是什么?
看来我需要这样做:
_renderPassDescriptor.depthAttachment.storeAction = MTLStoreActionStore;
然后以某种方式通过 CPU 从缓冲区中读取?
虽然也许有更好的方法,因为我只需要一个点(触摸点)。片段着色器是否可以仅存储该点的深度(或 2x2 用于双线性插值),从而允许我将 storeAction 保留为 MTLStoreActionDontCare?
【问题讨论】: