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

问题描述 投票:1回答:2

我的问题与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
2个回答
1
投票

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

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


0
投票

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

这里是working example

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.