我有一个 2x4 矩阵。代表正方形的4个点。我需要将所述正方形旋转 x 弧度(显然可以转换为度数),旋转点/锚点是正方形的中心。
由于 OpenGL ES 2.0 删除了转换函数(glPush/glPop、glRotate、glTranslate、glScale 等),我需要自己进行旋转。有人可以帮我写一个函数来执行旋转吗?
我有一个 2x4 矩阵。代表正方形的4个点。我需要将所述正方形旋转 x 弧度(显然可以转换为度数),旋转点/锚点是正方形的中心。
由于 OpenGL ES 2.0 删除了转换函数(glPush/glPop、glRotate、glTranslate、glScale 等),我需要自己进行旋转。有人可以帮我写一个函数来执行旋转吗?
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 管道,这可能会变得很长。您需要更多信息吗?