OpenGL透视矩阵到DirectX矩阵?

时间:2014-07-18 22:26:50

标签: c++ directx glm-math

我正在将我的OpenGL引擎转换为DirectX11。我在OpenGL中使用了GLM,并且如果可能的话将在Directx中继续使​​用。然而,我遇到的一个问题是使用glm::perspective

构建透视矩阵

OpenGL映射[-1,1],而DirectX映射[0,1]。这有什么简单的解决方法吗?因此,我宁愿不切换数学库。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用DirectXMath的XMMatrixPerspectiveFovRH(适用于右手视图系统)或XMMatrixPerspectiveFovLH(适用于左手设置)。使用Direct3D 9传统固定功能管道,您必须使用LH。对于可编程着色器,DirectX应用程序通常由LH决定,而OpenGL应用程序通常是RH。有关详细信息,请参阅DirectXMath程序员指南。

如果使用不带Windows 8.0 SDK或Windows 8.1 SDK的旧版DirectX SDK,则可以使用与DirectXMath非常相似的XNAMath