gpt4 book ai didi

c++ - 使用 GLM 的 UnProject

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:23 26 4
gpt4 key购买 nike

我不确定如何使用 Unproject method由 GLM 提供。

具体来说,viewport是以什么格式传入的?为什么该函数不需要 View 矩阵以及投影和世界矩阵?

最佳答案

这里需要一点历史。 GLM 的 unproject 实际上或多或少是对 gluUnProject 的直接替代。使用已弃用的 OpenGL 固定函数渲染的函数。在这种模式下,模型和 View 矩阵实际上组合在“模型 View ”矩阵中。显然,GLM 作者在命名中删除了“ View ”部分,这使事情变得更加困惑,但它归结为传递类似 view*model 的内容。

现在实际使用:

  • win 是一个 vector ,包含三个在窗口坐标中有意义的分量。这些是您视口(viewport)中的坐标“x,y”,您通常通过读取位于 (x,y)
  • 的深度缓冲区来检索“z”坐标
  • 如果您甚至考虑使用此功能,模型、 View 和投影矩阵应该不言自明。但是很好(特定于 opengl)refresher可能会有用。
  • 视口(viewport)定义为 glViewport , 这意味着 (x,y,w,h)。 X 和 Y 指定视口(viewport)的左下角(通常为 0,0)。宽度和高度 (w,h)。请注意,在许多其他系统中,x,y 指定左上角,然后您必须转换 y 坐标,这在我链接到下面的 NeHe 代码中显示。

应用时,您只需将提供的窗口坐标转换回对象坐标,这或多或少与您的渲染代码通常所做的相反。

关于原始 gluUnProject 的半正经解释可以作为 NeHe article 找到。 .但这当然是特定于 OpenGL 的,而 glm 可以在其他环境中使用。

关于c++ - 使用 GLM 的 UnProject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com