【问题标题】:Which opengl calls modify the view matrix哪个opengl调用修改视图矩阵
【发布时间】:2014-06-03 15:09:18
【问题描述】:

哪些 opengles 调用会修改当前矩阵? 我可以想到以下几点:

glLoadIdentity()
glPushMatrix()
glPopMatrix()
glMultMatrixf()
glLoadMatrixf()

【问题讨论】:

  • 它们都不存在,因为它们都不存在。见stackoverflow.com/questions/2918232/…
  • @ColonelThirtyTwo:发帖人没有指定 ES 2.0。其中一些存在于 ES 1.0 中,还有一些存在于完整的 OpenGL 中。
  • @RetoKoradi 哦,哎呀。我认为根本没有 ES 版本有它们。
  • @ColonelThirtyTwo:ES 1.0 是固定功能 OpenGL 的简化版本。非常有限。他们决定用 ES 2.0 做一个干净利落的剪裁。如果您查看规范文件,ES 2.0 被列为新 API,而不是 ES 1.0 的更新版本,因为它根本不向后兼容。

标签: opengl opengl-es


【解决方案1】:

不计算相同调用的d 变体,至少添加:

glLoadTransposeMatrixf()
glMultTransposeMatrixf()
glRotatef()
glScalef()
glTranslatef()

还有几个用于修改投影矩阵的调用,但如果您错过调用glMatrixMode(GL_PROJECTION),则会修改视图矩阵:

glFrustum()
glOrtho()

这些来自 OpenGL 2.1。由于您的问题带有“opengl”标签,因此我认为所有版本都很重要。

除此之外,人们经常将 GLU 与传统的 OpenGL 应用程序一起使用。 GLU 有许多修改矩阵的函数。他们将使用上面列出的底层 OpenGL 调用。

【讨论】:

  • 谢谢我错过了旋转/缩放/翻译方法。
  • 不要忘记glOrtho (...)glFrustum (...)。虽然标题谈到“视图”矩阵,但实际问题是关于修改当前矩阵。尽管您通常不会将投影矩阵设置为视图矩阵的一部分,但没有什么能阻止您这样做...这两个函数在 current 矩阵上运行(出于明显的原因,通常为 GL_PROJECTION )。
  • 谢谢,我添加了这些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多