【问题标题】:OpenGL transformation matrix not translating properlyOpenGL 转换矩阵未正确转换
【发布时间】:2018-01-11 23:41:52
【问题描述】:

我一直在使用的 3D 引擎遇到问题。转换矩阵应用的转换不正确,坦率地说,我不知道为什么。

我正在使用的变换矩阵:

{ 1f, 0, 0, 0,
  0, 1f, 0, 1f,
  0, 0, 1f, 0,
  0, 0, 0, 1f }

此变换矩阵应用于由两个三角形组成的普通立方体,然后扭曲立方体的边缘而不是应用平移。

原始矩形:


扭曲的矩形:


附: z 轴(近/远)上的任何平移都可以正常工作,只有 x 轴(左/右)和 y 轴(上/下)扭曲立方体。

【问题讨论】:

  • 该翻译矩阵具有正确的格式,这使人们相信您的问题可能出在其他地方。请发布更多代码,包括如何加载转换矩阵和渲染例程。

标签: java opengl lwjgl linear-algebra


【解决方案1】:

我是 OpenGL 的新手,但据我所知,OpenGL 中的矩阵使用列优先矩阵排序表示:这意味着您应该使用转置变换矩阵:

{ 1f, 0, 0, 0,
  0, 1f, 0, 0,
  0, 0, 1f, 0,
  0, 1f, 0, 1f }

来源:https://stackoverflow.com/a/13294326/6163527

【讨论】:

  • 我相信您将 OpenGL 约定与 DirectX 约定混为一谈。来源:gamedev.net/forums/topic/…
  • 好吧,无论如何...转置矩阵有效。非常感谢。
  • 我不确定我之前的措辞。将其更改为我在链接源中找到的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多