繁体   English   中英

OpenGL ES 2.0中的旋转

[英]Rotation in OpenGL ES 2.0

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

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

二维旋转可以表示为(其中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管道,则可能会花费很长时间。 您需要更多信息吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM