OpenGL перспективная матрица к матрице DirectX?

Я конвертирую свой движок OpenGL в DirectX11. Я использовал GLM в OpenGL, и продолжу в Directx, если это возможно. Однако у меня есть одна проблема - построение матрицы перспективы с использованием glm::perspective

OpenGL отображает [-1, 1], тогда как DirectX отображает [0, 1]. Есть ли какое-нибудь легкое решение для этого? Я бы предпочел не переключать математическую библиотеку только из-за этого.

2 ответа

Решение

Смотрите этот http://msdn.microsoft.com/en-us/library/windows/desktop/bb205350(v=vs.85).aspx Это встроенная функция для Direct3D/X для построения матрицы

Вы либо используете DirectXMath XMMatrixPerspectiveFovRH (для систем просмотра для правшей) или XMMatrixPerspectiveFovLH (для установок для левшей). С устаревшим конвейером с фиксированными функциями Direct3D 9 вы должны использовать LH. Для программируемых шейдеров, приложения DirectX часто являются LH, в то время как приложения OpenGL часто RH. Подробнее об этом см. В руководстве программиста DirectXMath.

Если вы используете устаревший DirectX SDK без Windows 8.0 SDK или Windows 8.1 SDK, вы можете использовать XNAMath, который очень похож на DirectXMath.

Другие вопросы по тегам