在OpenGL中平移和移动相机的正确方法?
Posted
技术标签:
【中文标题】在OpenGL中平移和移动相机的正确方法?【英文标题】:Proper way to pan and move camera in OpenGL? 【发布时间】:2010-09-03 00:51:10 【问题描述】:现在我在渲染所有内容之前通过 glRotating 进行平移,并且通过 gltranslating 移动相机。我觉得这是错误的,因为我本质上是在移动场景,而不是相机。移动相机的正确方法是什么?
谢谢
【问题讨论】:
嗨 Milo,如果您对平移功能有任何了解,现在意味着。请为 android 中 OpenGL Es2.0 中的 Pan Functionality 提供任何示例代码。我看到了更多链接,但是,我无法清楚地了解该 pan 功能.. @sje397 链接已损坏。 【参考方案1】:实际上“在相机周围移动场景”是 OpenGL 中的正确方法。
这是因为 OpenGL 将视图和模型矩阵组合到模型视图矩阵中。 (查看here了解更多详情)
很明显,lookat 函数(如上所述)是移动(虚拟)相机的一种简单方法,但我发现它不适用于 OpenGL3。
我建议使用优秀的glm library 来设置 OpenGL3 的转换矩阵。
亲切的问候, 弗洛里安
【讨论】:
嗨,弗洛里安,您能否建议任何有关 Android 中 OpenGL Es2.0 中的平移功能的示例代码。我看到了更多链接,但是,我无法清楚地了解该平移功能.. 【参考方案2】:移动场景和相机本质上是一回事。一个是另一个的否定。 实现它的通常方法是有一个具有绝对坐标和方向的相机类,然后你就放
glTranslate(-camera)
glRotate(-camera)
在显示函数的顶部。
【讨论】:
嗨 Takoi,我也尝试过这个平移,虽然触摸事件。但是,它不适合我。你能给出这个平移功能的一些示例代码吗?【参考方案3】:gluLookAt 是您移动相机的方式。
【讨论】:
@Milo:你也可以用 gluLookAt 平移它。 这是 Python 绑定文档的链接。 Here are C API docs. @Craig McQueen:感谢链接。 您好,该链接(页面未找到错误)未打开..请您提供一些示例程序,用于在 android 的 opengles2.0 中进行此平移功能..以上是关于在OpenGL中平移和移动相机的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章