Как адаптировать матрицы мира / вида / проекции в стиле DirectX к OpenGL?

У меня есть приложение, которое использует DirectX и, следовательно, левостороннюю систему мировых координат, представление, которое смотрит вниз положительно по оси z, и проекцию, которая проецируется в единичный куб, но с z от 0 до 1.

Я портирую это приложение на OpenGL, а OpenGL имеет другую систему координат и т. Д. В частности, оно правостороннее, вид смотрит вниз по отрицательному z, а проекция находится в реальном единичном кубе.

Как проще всего адаптировать матрицы DirectX к OpenGL? Изменение мира-пространства кажется легким, просто перевернув ось x, но я не совсем уверен, как изменить вид / проекцию. Я могу изменить все матрицы по отдельности, прежде чем умножать их вместе и отправлять в свой шейдер. Если возможно, я хотел бы придерживаться системы координат на основе DirectX как можно дальше по конвейеру (т. Е. Я не хочу менять место размещения своих объектов, способ вычисления пирамиды обзора и т. Д. - в идеале я Я только внесу некоторые изменения в матрицы прямо перед тем, как передать их моим шейдерам.)

1
задан Anteru 12 September 2010 в 16:04
поделиться