【问题标题】:OpenGL perspective matrix to DirectX matrix?OpenGL透视矩阵到DirectX矩阵?
【发布时间】:2017-09-10 11:35:08
【问题描述】:

我正在将我的 OpenGL 引擎转换为 DirectX11。我在 OpenGL 中使用了 GLM,如果可能的话,我会在 Directx 中继续使用。然而,我遇到的一个问题是使用 glm::perspective 构建透视矩阵

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

【问题讨论】:

标签: c++ directx glm-math


【解决方案1】:

查看http://msdn.microsoft.com/en-us/library/windows/desktop/bb205350(v=vs.85).aspx 这是 Direct3D/X 的内置函数,用于构建矩阵

【讨论】:

  • 实际上我建议避免使用旧版 D3DXMath。使用DirectXMath
  • 哦,是的,没错。我最近做了 OpenGL。用旧的directx。
【解决方案2】:

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

如果使用没有 Windows 8.0 SDK 或 Windows 8.1 SDK 的旧版 DirectX SDK,您可以使用与 DirectXMath 非常相似的XNAMath

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多