Вращение в OpenGL ES 2.0

У меня матрица 2х4. которые представляют 4 точки квадрата. Мне нужно повернуть указанный квадрат на x радианов (которые, очевидно, можно преобразовать в градусы), при этом точка поворота / якорь является центром квадрата.

Так как OpenGL ES 2.0 удалил функции преобразования (glPush / glPop, glRotate, glTranslate, glScale и т. Д.), Мне нужно сделать вращение самостоятельно. Может ли кто-нибудь помочь мне написать функцию для предварительного вращения?

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;

Приведенные выше линейные уравнения могут быть выражены в виде матрицы 2х2 (по-американски, в столбцах):

|  cs  sn |
| -sn  cs |

Матрица может быть расширена, чтобы добавить также переводы:

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

В OpengGLES 2.0 вы, вероятно, будете упаковывать эти 4 точки в массив из двух компонентов, вам нужно будет преобразовать их в вершинный шейдер. Вы вычисляете вышеприведенную матрицу и отправляете ее по конвейеру, используя униформу.

Это может занять довольно много времени, если вы не знаете конвейер OpenGL ES 2.0. Вам нужна дополнительная информация?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]