Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h> // sunt mentionate fisiere (biblioteci) care urmeaza sa fie incluse
- #include <gl/freeglut.h> // nu trebuie uitat freeglut.h (sau glut.h sau gl.h & glu.h)
- void init (void) // initializare fereastra de vizualizare
- {
- glClearColor (1.0, 1.0, 1.0, 0.0); // precizeaza culoarea de fond a ferestrei de vizualizare
- //coduri de culoare RGB 1 1 1 (maxim)
- glMatrixMode (GL_PROJECTION); // se precizeaza este vorba de o reprezentare 2D, realizata prin proiectie ortogonala
- gluOrtho2D (0.0, 800.0, 0.0, 600.0); // sunt indicate coordonatele extreme ale ferestrei de vizualizare
- //maparea peste background de la 0 la 800 pe Ox si 0 la 600 pe Oy
- }
- void desen (void) // procedura desenare
- {
- // segmentele
- glClear(GL_COLOR_BUFFER_BIT);
- glLineWidth (2.0);
- //GL_POINTS ar transforma coordonatele in puncte
- glPointSize(22);
- glEnable(GL_POINT_SMOOTH);
- glBegin(GL_POINTS);
- glColor3f (0.0, 0.0, 0.0);
- glVertex2i (200, 200);
- glEnd();
- glBegin (GL_LINES);
- glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
- glVertex2i (20,20);
- glVertex2i (20, 200);
- glVertex2i (20,20);
- glVertex2i (200, 20);
- glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
- glVertex2i (200, 20);
- glVertex2i (200, 200);
- glVertex2i (200, 200);
- glVertex2i (20,200);
- glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
- glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
- glVertex2i (280, 80);
- glVertex2i (280, 280);
- glVertex2i (280, 280);
- glVertex2i (80,280);
- glColor3f (0.0, 0.0, 0.0); // culoarea primului segment: rosu
- glVertex2i (20,200);
- glVertex2i (80, 280);
- glVertex2i (200,200);
- glVertex2i (280, 280);
- glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
- glVertex2i (200, 20);
- glVertex2i (280,80);
- glEnd ( );
- glEnable(GL_LINE_STIPPLE);
- glLineStipple(1,0xF0F0);
- glBegin (GL_LINES);
- glColor3f (0.0, 0.0, 0.0); // culoarea celui de-al doilea segment: verde
- glVertex2i (20, 20);
- glVertex2i (80, 80);
- glVertex2i (80,80);
- glVertex2i (80, 280);
- glVertex2i (80,80);
- glVertex2i (280, 80);
- glVertex2i (80,80);
- glVertex2i (200,200);
- glEnd ( );
- glDisable(GL_LINE_STIPPLE);
- // punctul de intersectie
- glPointSize(20);
- glEnable(GL_POINT_SMOOTH);
- glBegin (GL_POINTS);
- glColor3f (1.0, 1.0, 1.0);
- glVertex2i (200, 200);
- glColor3f (1.0, 0.0, 0.0);
- glVertex2i (20,20);
- glColor3f (1.0, 1.0, 0.0);
- glVertex2i (200,20);
- glColor3f (0.0, 1.0, 0.0);
- glVertex2i (280,80);
- glColor3f (1.0, 0.0, 1.0);
- glVertex2i (20,200);
- glColor3f (0.0, 0.0, 1.0);
- glVertex2i (80,280);
- glColor3f (0.0, 1.0, 1.0);
- glVertex2i (280,280);
- glColor3f (0.0, 0.0, 0.0);
- glVertex2i (80,80);
- glEnd ( );
- glFlush ( ); // proceseaza procedurile OpenGL cat mai rapid
- }
- void main (int argc, char** argv)
- {
- //crearea ferestrei pana la glutCreateWindow; ar putea fi glut double pt animatii
- glutInit (&argc, argv); // initializare GLUT
- glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); // se utilizeaza un singur buffer | modul de colorare RedGreenBlue (= default)
- glutInitWindowPosition (100, 100); // pozitia initiala a ferestrei de vizualizare (in coordonate ecran)
- glutInitWindowSize (800, 600); // dimensiunile ferestrei
- glutCreateWindow ("Puncte & Segmente"); // creeaza fereastra, indicand numele ferestrei de vizualizare - apare in partea superioara
- init (); // executa procedura de initializare
- glClear (GL_COLOR_BUFFER_BIT); // reprezentare si colorare fereastra de vizualizare
- glutDisplayFunc (desen); // procedura desen este invocata ori de cate ori este nevoie
- //va fi reapelat de fiecare data pentru redimensionare, iar motivul ptc se face negru la redimensionare deoarece nu avem clear colour
- glutMainLoop ( ); // ultima instructiune a programului, asteapta (eventuale) noi date de intrare
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement