اینم کد همون دو تا دایره با تنظیم سرعت :
#include <GL/glut.h>
float g_fSpeed;
float g_fCur_Angle;
void special( int key, int x, int y)
{
switch(key)
{
case GLUT_KEY_UP:
g_fSpeed+=0.1f;
break;
case GLUT_KEY_DOWN:
g_fSpeed-=0.1f;
break;
}
}
//
void GL_Display(void)
{
g_fCur_Angle += g_fSpeed;
// pak kardane safhe
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 0.0, 0.0);
GLUquadricObj *circle = gluNewQuadric ();
gluQuadricDrawStyle (circle, GLU_SILHOUETTE);
gluDisk (circle,0,0.8,5000,1);
gluDeleteQuadric(circle);
// daire aval
glPushMatrix();
glPointSize(5.0);
glRotatef(g_fCur_Angle,0,0,0.1);
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_POINTS);
glVertex2f(0.25, 0.75);
glEnd();
glPopMatrix();
// daire dovom
glPushMatrix();
glPointSize(10.0);
glRotatef(-g_fCur_Angle,0,0,0.1);
glColor3f(1.0, 0.0, 1.0);
glBegin(GL_POINTS);
glVertex2f(0.25, 0.75);
glEnd();
glPopMatrix();
glutSwapBuffers();
}
// initialize function
void GL_Init(void)
{
// pak kardane safhe ba range sefid
glClearColor(1.0,1.0,1.0,1.0);
// tanzim sorat harkat be 1
g_fSpeed = 1.0f;
g_fCur_Angle = 0.0f;
// narma kardane (daire kardan) nogat
glEnable(GL_POINT_SMOOTH);
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(500,500);
glutInitWindowSize(400,400);
glutCreateWindow("Circle");
GL_Init(); // initializing OpenGL
glutDisplayFunc(GL_Display);
glutIdleFunc(GL_Display);
glutSpecialFunc(special);
glutMainLoop();
return 0;
}
فکر کنم دنبال این بودین بازم اگر چیزی رو جا انداخته باشم بگین.