No te habrás olvidao del glutPostRedisplay(); ?
(en caso de que uses Glut)
Aquí tienes un código que dibuja un planeta orbitando a otro, sacado del Redbook de Opengl.
#include "gl.h"
#include "glu.h"
#include "aux.h"
static int year = 0, day = 0;
void dayAdd (void)
{
day = (day + 10) % 360;
}
void daySubtract (void)
{
day = (day - 10) % 360;
}
void yearAdd (void)
{
year = (year + 5) % 360;
}
void yearSubtract (void)
{
year = (year - 5) % 360;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glPushMatrix();
auxWireSphere(1.0);
glRotatef((GLfloat) year, 0.0, 1.0, 0.0);
glTranslatef (2.0, 0.0, 0.0);
glRotatef((GLfloat) day, 0.0, 1.0, 0.0);
auxWireSphere(0.2);
glPopMatrix();
glFlush();
}
void myinit(void)
{
glShadeModel(GL_FLAT);
}
void myReshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef (0.0, 0.0, -5.0);
}
int main(int argc, char** argv)
{
auxInitDisplayMode(AUX_SINGLE | AUX_RGBA);
auxInitPosition(0, 0, 500, 500);
auxInitWindow(argv[0]);
myinit();
auxKeyFunc(AUX_LEFT, yearSubtract);
auxKeyFunc(AUX_RIGHT, yearAdd);
auxKeyFunc(AUX_UP, dayAdd);
auxKeyFunc(AUX_DOWN, daySubtract);
auxReshapeFunc(myReshape);
auxMainLoop(display);
}
Saludos.