我正在将我的OpenGL引擎转换为DirectX11。我在OpenGL中使用了GLM,并且如果可能的话将在Directx中继续使用。然而,我遇到的一个问题是使用glm::perspective
OpenGL映射[-1,1],而DirectX映射[0,1]。这有什么简单的解决方法吗?因此,我宁愿不切换数学库。
答案 0 :(得分:0)
见http://msdn.microsoft.com/en-us/library/windows/desktop/bb205350(v=vs.85).aspx这是Direct3D / X构建矩阵的内置函数
答案 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。