我的问题与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
...也许有一个转置使其成为专栏的?
如果您仅进行仿射变换,它将以这种方式工作。在这种情况下,a31和a32始终可以为零,而a33始终应为1。在这种情况下,您可以避免使用2x3矩阵,而使用基于着色器的现代GL,甚至可以直接使用该3x3或2x3矩阵而无需任何转换。
请注意,如果您进行投影变换,将矩阵扩展到4x4仍然可以,但是会在z维度上引入失真。
您应该将平移X和Y值从图形坐标系转换为OpenGL坐标系。
这里是working example:
您还可以检查几乎相同的问题,但有解释:OpenGL ES how to apply transformations from android.graphics.Matrix