0

我有一个 2x4 矩阵。代表正方形的4个点。我需要将所述正方形旋转 x 弧度(显然可以转换为度数),旋转点/锚点是正方形的中心。

由于 OpenGL ES 2.0 删除了转换函数(glPush/glPop、glRotate、glTranslate、glScale 等),我需要自己进行旋转。有人可以帮我写一个函数来执行旋转吗?

4

1 回答 1

0

2D 中的旋转可以表示为(其中theta是弧度):

cs = cos(theta);
sn = sin(theta);

out.x = in.x * cs - in.y * sn;
out.y = in.x * sn + in.y * cs;

上述线性方程组可以表示为一个 2x2 矩阵(以美国方式,按列排列):

|  cs  sn |
| -sn  cs |

可以扩展矩阵以添加翻译:

|  cs  sn  tx |
| -sn  cs  ty |
|   0   0  1  |

在 OpengGLES 2.0 中,您可能会将这 4 个点打包为两个组件的数组,您需要在顶点着色器中转换它们。您计算上述矩阵并使用制服将其发送到管道中。

如果您不了解 OpenGL ES 2.0 管道,这可能会变得很长。您需要更多信息吗?

于 2013-05-19T08:29:13.347 回答