Как повернуть объект с помощью OpenGL ES 2.0? - PullRequest
2 голосов
/ 27 июля 2010

В OpenGL ES 1.1 вы можете использовать glRotatef() для поворота модели, но эта функция не существует в OpenGL ES 2.0.

Следовательно, как вы выполняете ротацию в OpenGL ES 2.0?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Чтобы следовать тому, что сказал Кристиан, вам нужно самостоятельно отслеживать матрицу вида модели и манипулировать ею для выполнения необходимых вам вращений.Затем вы передадите матрицу в качестве униформы для своего шейдера и сделаете что-то вроде следующего:

attribute vec4 position;

uniform mat4 modelViewProjMatrix;

void main()
{
    gl_Position = modelViewProjMatrix * position;
}

Я обнаружил, что вспомогательные функции Core Animation CATransform3D работают очень хорошо для выполнения правильного видаматричных манипуляций, необходимых для этого.Вы можете вращать, масштабировать и переводить CATransform3D, а затем считывать его матричные элементы 4x4, чтобы создать необходимую матрицу представления модели.

Если вы хотите увидеть это в действии, это пример приложения для iPhone Я создал, показывает, как выполнить вращение куба с использованием OpenGL ES 1.1 и 2.0.

0 голосов
/ 22 мая 2011

Без фиксированных стеков матриц функций вы должны сами управлять своими матрицами преобразования. Обратитесь к некоторому вводному материалу по матричной и векторной алгебре, особенно в отношении трехмерных преобразований. Тогда вы поймете, что на самом деле делает glRotate и тому подобное.

...