1 Gestione della Window Daniele Marini
2 Definire una Window: GLUT o altro WM /* Standard GLUT initialization */ glutInit(&argc,argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); /* default, non e necessario */ glutInitWindowSize(500,500); /* 500 x 500 pixel window */ glutInitWindowPosition(0,0); /* window in alto a sin su display */ glutCreateWindow("Sierpinski Gasket"); /* crea con titolo */ glutDisplayFunc(display); /* display callback invocata quando apre finestra */ myinit(); /* predispone attributi */ glutMainLoop(); /* event loop */ }
3 Drawing survival kit Pulire la finestra: glClearColor(0.0, 0.0, 0.0, 0.0); definisce il colore con cui la finestra viene pulita glClear(GL_COLOR_BUFFER_BIT); esegue la pulitura (cancellazione del contenuto precedente) inizializzando il color buffer col nero - ci sono altri buffer … Color buffer GL_COLOR_BUFFER_BIT Depth buffer GL_DEPTH_BUFFER_BIT Accumulation buffer GL_ACCUM_BUFFER_BIT Stencil buffer GL_STENCIL_BUFFER_BIT
4 Si possono pulire gli altri buffer assegna a tutti i pixel del depth buffer al valore indicato: glClearDepth(1.0)
5 Drawing survival kit Definire un colore: glColor3f(0.0, 0.0, 0.0); black glColor3f(1.0, 0.0, 0.0); red glColor3f(0.0, 1.0, 0.0); green glColor3f(1.0, 1.0, 0.0); yellow glColor3f(0.0, 0.0, 1.0); blue glColor3f(1.0, 0.0, 1.0); magenta glColor3f(0.0, 1.0, 1.0); cyan glColor3f(1.0, 1.0, 1.0); white
6 Drawing survival kit Forzare il display del disegno: glFlush() OGL ha una architettura client-server, un programma eseguito in rete richiede il comando glFlush per inviare al client il disegno; su una wrkstn non ha effetto ma è buona regola usarlo glFinish() esegue la visualizzazione e resta in attesa di un messaggio che il disegno è completo prima di accettare input: occhio alle performance!