将android.graphics.Matrix转换为GL mat4?

时间:2013-07-22 21:37:50

标签: android opengl-es

我的问题与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

...也许是一个让它成为专栏的转置?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

这里是working example

enter image description here

您也可以检查几乎相同的问题,但有解释: OpenGL ES how to apply transformations from android.graphics.Matrix