Я пытаюсь повернуть объект вокруг его центра со следующим кодом:Вращающийся объект в OpenGL ES - Правильный порядок применения преобразований? iPhone
-(void)render
{
// clear the matrix
glPushMatrix();
glLoadIdentity();
// move to my position
//scale
glScalef(0.000015, 0.000015, 0.000015);
xRotation =280.0;
zRotation =1.0;
yRotation +=0.5;
glRotatef(xRotation, 1.0f, 0.0f, 0.0f);
glRotatef(yRotation, 0.0f, 1.0, 0.0f);
glRotatef(zRotation, 0.0f, 0.0f, 1.0f);
[mesh render];
//restore the matrix
glPopMatrix();
}
Этот код работает правильно и объект вращается вокруг центра. Проблема в том, что у меня также есть матрица, которая определяет начальную позицию объекта в сцене, называемую matricesArray. Я добавил новую строку в мой код, чтобы умножить эту матрицу и поместить объект в правильном исходном положении:
-(void)render
{
// clear the matrix
glPushMatrix();
glLoadIdentity();
// move to my position
//xRotation = 280;
//scale
glScalef(0.000015, 0.000015, 0.000015);
xRotation =280.0;
zRotation =1.0;
yRotation +=0.5;
glRotatef(xRotation, 1.0f, 0.0f, 0.0f);
glRotatef(yRotation, 0.0f, 1.0, 0.0f);
glRotatef(zRotation, 0.0f, 0.0f, 1.0f);
glMultMatrixf(matricesArray); //This is the line I have added to apply the matrix.
[mesh render];
//restore the matrix
glPopMatrix();
}
Проблема заключается в том, что объект в настоящее время вращается в широком круге вокруг экрана.
Мой вопрос - правильный порядок применения матрицы в моем коде?
Заранее спасибо.
Как? Матрица (matricesArray) также содержит данные о положении и ротации? – GuybrushThreepwood
do glRotatef before glTranslatef – ggfela
Все еще не работает - я думаю, что проблема с командой glmultmatrix. – GuybrushThreepwood