Код:
int DrawGLScene(GLvoid)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, texture[0]);
for (loop=0; loop<num; loop++)
{
glLoadIdentity();
glTranslatef(0.0f,0.0f,zoom);
glRotatef(tilt,1.0f,0.0f,0.0f);
glRotatef(star[loop].angle,0.0f,1.0f,0.0f);
glTranslatef(star[loop].dist,0.0f,0.0f);
glRotatef(-star[loop].angle,0.0f,1.0f,0.0f);
glRotatef(-tilt,1.0f,0.0f,0.0f);
Не могу разобраться с этой секцией кода.
Ну вращаем мы сцену по оси х на 90 градусов:
glRotatef(tilt,1.0f,0.0f,0.0f);
Теперь ось Z смотрит на нас, правильно? А Y стал на место Z. А звезды повернуты к нам торцом.
Дальше:
glRotatef(star[loop].angle,0.0f,1.0f,0.0f);
-вращаем по Y, который смотрит на нас, мы поворачиваем звезду вокруг оси. Правильно?
Дальше:
glTranslatef(star[loop].dist,0.0f,0.0f);
-Переносим звезду в сторону вправо по оси X.
Теперь:
glRotatef(-star[loop].angle,0.0f,1.0f,0.0f);
-вращаем перенесенную звезду по оси Y, которая смотрит на нас обратно на тот же угол(зачем не понятно?).
И в завершение:
glRotatef(-tilt,1.0f,0.0f,0.0f);
-вращаем всю сцену обратно на 90 градусов по X
Что это нам дает? Ничего не понял. И что дают эти все манипуляции, если
рисование самих звезд будет гораздо ниже? Или это для тех звезд, которые уже нарисованы?
Не проще было бы не менять ориентацию осей, а взять и круить звезды
по оси Z вокруг центра своего и вокруг самой оси Z?