ОК, я понял это через 2 секунды после публикации этого вопроса. Я не знаю, было ли это совпадением или в StackOverflow появилась новая функция, позволяющая видеть будущие ответы.
Положение Z элементов spritebatch находится в диапазоне от 0 до 1, поэтому они не сопоставимы напрямую с позициями z отображаемой ортогональной геометрии.
Когда вы создаете орфографическую матрицу, вы определяете ближнюю и дальнюю плоскости отсечения. Заданная вами позиция Z должна быть в этой плоскости отсечения. У меня было предчувствие, что класс spritebatch эффективно рисует квадратики орфографически, так что расширение от 0 до 1 означало бы, что 0 представляет ближний клип, а 1 - дальний клип, и глубина, вероятно, отображается в том же месте, где глубина трехмерной геометрии равна переводится в.
Тааак, чтобы это сработало, я просто подумал, что клипы ближнего / дальнего расстояния, которые я определил для орфографической визуализации, будут измеряться по отношению к клипам ближнего / дальнего расстояния рендеринга спрайтов, так что это просто вопрос установки правильного значение z, например:
Если у меня есть ближний клип 0 и дальний клип 10000, и я хотел нарисовать его так, чтобы он соответствовал глубине слоя 0,5f и рендерился перед спрайтами, нарисованными на 0,6, и позади спрайтов, нарисованными на 0,4 Я делаю:
float zpos = 0.5f;
float orthoGraphicZPos = LinearInterpolate(0, 10000, zpos);
Или просто zpos * 10000: D
Полагаю, было бы более целесообразно, чтобы ваши орфографические средства рендеринга находились рядом / далеко, чтобы они были равны 0 и 1 для непосредственного сравнения с глубиной слоя спрайтов.
Надеюсь, мои рассуждения об этом решении были правильными (более или менее).