我有一个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中,您可能会将这四个点打包为两个组件的数组,您需要在顶点着色器中对其进行转换。您可以计算上述矩阵,然后使用统一码将其发送到管道中。
如果您不知道OpenGL ES 2.0管道,则可能会花费很长时间。您需要更多信息吗?
关于c++ - OpenGL ES 2.0中的旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16632674/