#include #include #include const int icaskrok = 25; // v milisekundach const float Lmax = 20.0; // rozmer sceny v smere X float surX = 0.0; void aktualizuj(const int ihod) { surX += 0.05; glutPostRedisplay(); glutTimerFunc(icaskrok, aktualizuj, ihod+1); } void obsluhaResize(int sirka, int vyska) { glViewport(0, 0, sirka, vyska); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (sirka == 0) sirka++; const float pomstr = ((float)vyska)/sirka; gluOrtho2D(-0.5*Lmax, 0.5*Lmax, -0.5*Lmax*pomstr, 0.5*Lmax*pomstr); } void kresliTrojuh2D() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 0.0, 1.0); glLoadIdentity(); glTranslatef(surX, 0.0, 0.0); glBegin(GL_TRIANGLES); glVertex2f(-0.1*Lmax, -0.1*Lmax); glVertex2f( 0.1*Lmax, -0.1*Lmax); glVertex2f( 0.0*Lmax, 0.1*Lmax); glEnd(); glutSwapBuffers(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE); glutInitWindowSize(1080, 640); glutInitWindowPosition(200, 150); glutCreateWindow("OpenGL: trojuholnik"); glutDisplayFunc(kresliTrojuh2D); glClearColor(0.8, 0.3, 0.3, 0.3); glutReshapeFunc(obsluhaResize); glutTimerFunc(icaskrok, aktualizuj, 0); glutMainLoop(); return 0; }