#include #include int angle = 0; void init() { // set matrix mode to PROJECTION mode glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0,200,0,200); } void drawTriangle() { //delete buffers glPushMatrix(); glClear(GL_COLOR_BUFFER_BIT); glLineWidth(5.0); glShadeModel(GL_SMOOTH); glTranslatef(100.0f, 100.0f,0.0f); glRotatef(angle, 0.0f, 0.0f, 1.0f); glTranslatef(-100.0f, -100.0f,0.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); /* red */ glVertex2i(60,60); glColor3f(0.0f, 1.0f, 0.0f); /* red */ glVertex2i(100,140); glColor3f(0.0f, 0.0f, 1.0f); /* blue */ glVertex2i(140,60); glEnd(); glPopMatrix(); } void keyboard(unsigned char key, int x, int y) { switch(key) { case 27: exit(0); break; } } // Called to draw scene void RenderScene(void) { // Clear the window with current clearing color glClear(GL_COLOR_BUFFER_BIT); drawTriangle(); // Flush drawing commands glutSwapBuffers(); } // Setup the rendering state void SetupRC(void) { // Set clear color to black glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } void Timer(int value) { printf("Timer esemeny (%d)\n", value); angle += 2.0f; if( angle > 360.0f ) angle = 0.0f; glutPostRedisplay(); glutTimerFunc(10, Timer, value + 1); } void Idle() { glutPostRedisplay(); } // Main program entry point int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(100,100); glutInitWindowPosition(20,20); glutCreateWindow("Points"); SetupRC(); init(); glutDisplayFunc(RenderScene); glutKeyboardFunc(keyboard); glutTimerFunc(10, Timer, 1); // 1 mp mulva meghivodik a Timer() fuggveny glutIdleFunc(Idle); // Idle(), ha nem tortenik semmi glutMainLoop(); return 0; }