Также есть хорошее визуальное объяснение из видео WWDC, добавившее его к моему вопросу.

аю металлруководство на raywenderlich.com, где он представляет чистый Swift float4x4вспомогательный класс, 99% - это просто обертка вокруг функций GLKit, кроме одной функции, которая меня действительно озадачивает:

  static func makePerspectiveViewAngle(_ fovyRadians: Float, aspectRatio: Float, nearZ: Float, farZ: Float) -> float4x4 {
    var q = unsafeBitCast(GLKMatrix4MakePerspective(fovyRadians, aspectRatio, nearZ, farZ), to: float4x4.self)
    let zs = farZ / (nearZ - farZ)
    q[2][2] = zs
    q[3][2] = zs * nearZ
    return q
  }

Почему это нужно изменитьq[2][2] а такжеq[3][2], Это какая-то несовместимость между системой координат Metal и GLKit?

Это конкретный выбор, сделанный в этом уроке? Если нет, есть ли какие-либо другие несовместимости между GLKit и Metal математикой?

Обновить: Я нашел хорошую иллюстрацию о системе координат пространства клипов Металла с сессии WWDC 2016: Внедрение Металла I.

Ответы на вопрос(1)

Ваш ответ на вопрос