Я думаю, что вы можете пытаться сделать что-то вроде этого (с rot
в функции, не глобальной):
GLfloat rot = 0.1;
glRotatef(rot, 0.0f, 1.0f, 0.0f);
, который не будет вращать объекты, нарисованные после.
Это потому, что glRotatef
работает с абсолютным вращением. Вы применяете постоянное вращение 0,1 для каждого изображения, которое вы рисуете, и поэтому они не двигаются.
Вам не нужно хранить rot
глобально, вы можете сохранить его вместе с моделью объекта, который вы вращаете, и сделать это так:
glRotatef(myObj->rotation, 0.0f, 1.0f, 0.0f);
... draw myObj->triangles ...
myObj->rotation += speed; // speed can be e.g. 0.1
Как примечание: имейте в виду, что если вы сделаете myObj->rotation += speed;
в функции рендеринга, ваша скорость вращения будет пропорциональна вашей скорости рендеринга (быстрее на более быстрых компьютерах), что обычно нежелательно. Чтобы избежать этого, вы можете проверить истекшее время и оценить его, только если это время, скажем, превышает 50 мс.