【问题标题】:Convert an android.graphics.Matrix to a GL mat4?将 android.graphics.Matrix 转换为 GL mat4?
【发布时间】:2013-07-22 21:37:50
【问题描述】:

我有一个与How to convert a 3x3 rotation matrix into 4x4 matrix? 稍有不同的问题:我正在编写 2D OpenGL 代码,该代码在平面(z 始终等于 0)几何体上操作纹理。 android.graphics.Matrix 类有许多方便的、经过调试的便捷方法,可以执行诸如绕显式枢轴点旋转等操作。

不是将 3x3 矩阵(可以进行 2D 仿射变换)转换为 4x4 矩阵

a11 a12 a13    a11 a12   0 a13
a21 a22 a23    a21 a22   0 a23
a31 a32 a33      0   0   1   0
               a31 a32   0 a33

...也许,通过转置使其成为列优先?

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    如果您只进行仿射变换,它会以这种方式工作。在这种情况下,a31 和 a32 总是可以为零,而 a33 无论如何都应该为 1。在这些情况下,您可以使用 2x3 矩阵,而使用基于现代着色器的 GL,您甚至可以直接使用该 3x3 或 2x3 矩阵而无需任何转换。

    请注意,如果您进行投影变换,将矩阵扩展到 4x4 仍然有效,但会在 z 维度上引入失真。

    【讨论】:

    • 谢谢 - 但如果您进行任何翻译,a31 和 a32 将非零。
    • @JonShemitz:好的,那你把它转换成我用的约定,a13 和 23 应该是零。
    【解决方案2】:

    您应该将平移 X 和 Y 值从图形坐标系转换为 OpenGL 坐标系。

    这是working example

    您也可以检查这个实际上是相同的问题,但有解释: OpenGL ES how to apply transformations from android.graphics.Matrix

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      • 2012-11-21
      相关资源
      最近更新 更多