Я хотел бы прочитать из буфера глубины. В GL на OS X я мог бы сделать:
float depth[2][2]; // get 2x2 for bilinear interpolation
glReadPixels(s.x, s.y, /*width*/2, /*height*/2, GL_DEPTH_COMPONENT, GL_FLOAT, depth);
(Обратите внимание, что с OpenGL ES на iOS вы не можете читать из буфера глубины)
Что эквивалентно металлу?
Похоже, мне нужно сделать:
_renderPassDescriptor.depthAttachment.storeAction = MTLStoreActionStore;
А потом как-то читать из буфера через ЦП?
Хотя, возможно, есть лучший способ, так как мне нужна только одна точка (там, где касание). Может ли фрагментный шейдер сохранить глубину только для этой точки (или 2x2 для билинейной интерполяции), что позволит мне оставить storeAction как MTLStoreActionDontCare?