OpenGL ES Learning - несколько вопросов о ротации - PullRequest
0 голосов
/ 25 января 2011

Хай там! Я очень новичок в OpenGL ES, я видел много примеров в сети, но у меня есть некоторые вопросы о поворотах.

Как я могу сделать двойной поворот за один раз? Поэтому мне нужно повернуть объект в его центре, и в то же время мне нужно повернуть этот объект по кругу, имеющему центральную точку, в пространстве.

Вторая вещь:

Я создаю этот код:

glLoadIdentity...
glTranslateF 0,0,0..
glRotateF...

drawSomeObject...

glLoadIdentity...
glTranslateF 0,3,0..
glRotateF...

drawSomeObject...

Это очень хорошо, с помощью этого кода я могу вращать свои рисованные объекты в его собственном центре. Но как я могу вращать или переводить все мои объекты как группу?

так что-то такое:

//translate, and rotate all in the group1
glTranslateF 0,0,0..
glRotateF...

GROUP1

glLoadIdentity...
glTranslateF 0,0,0..
glRotateF...

drawSomeObject...

glLoadIdentity...
glTranslateF 0,3,0..
glRotateF...

drawSomeObject...

END GROUP1


//translate, and rotate all in the group1
glTranslateF 2,0,0..
glRotateF...

GROUP2

glLoadIdentity...
glTranslateF 0,0,0..
glRotateF...

drawSomeObject...

glLoadIdentity...
glTranslateF 0,3,0..
glRotateF...

drawSomeObject...

END GROUP2

1 Ответ

1 голос
/ 25 января 2011

Применить следующую схему (псевдокод):

LoadIdentity
Translate (Group Translation) 
Rotate(Group Rotation) 
PushMatrix 

Translate Object1
Rotate Object1
DrawObject1

PopMatrix

PushMatrix

Translate Object2
Rotate Object2
DrawObject2

PopMatrix

... 

Поэтому не возвращайтесь в Identity для каждого объекта, а скорее возвращайтесь в состояние группы, которое можно легко сохранить с помощью PushMatrix и PopMatrix в матрице вида модели. Эти команды сохраняют текущее состояние во внутреннем стеке OpenGL (PushMatrix) и извлекают матрицу из стека на более позднем этапе (PopMatrix).

Вот ссылка на соответствующий учебник: http://www.swiftless.com/tutorials/opengl/pop_and_push_matrices.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...