1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #include <stdlib.h>
#include <stdio.h>
#include <GL/glut.h>
#include <GL/glext.h>
/*Définition d'un triangle*/
#define draw_triangle() glBegin(GL_LINE_LOOP);glVertex3f(-2.5, 0.0, 0.0);glVertex3f(2.5, 0.0, 0.0);glVertex3f(0.0, 4.5, 0.0);glEnd();
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
/*Activation des pointillés*/
glEnable(GL_LINE_STIPPLE);
/*Spécification de la matrice des models et de visualisation*/
glMatrixMode(GL_MODELVIEW);
/*Chargement de la matrice identité*/
glLoadIdentity();
/*Ajout de la matrice de base*/
glPushMatrix();
/*Spécification de la camera*/
gluLookAt(0.0, 2.5, 15.0, 0.0, 2.5, 0.0, 0.0, 1.0, 0.0);
/*Premier triangle de couleur blanche*/
glColor3f(1.0, 1.0, 1.0);
draw_triangle();
/*Déplacement du repère vers la droite*/
glTranslatef(-1.0, 0.0, 0.0);
/*Deuxième triangle de couleur rouge*/
glColor3f(1.0, 0.0, 0.0);
glLineStipple(1, 0xF00F);
draw_triangle();
/*Chargement de la matrice de base*/
glPopMatrix();
/*Ajout de la matrice de base*/
glPushMatrix();
glScalef(1.5, 0.5, 1.0);
/*Troisième triangle de couleur vert*/
glColor3f(0.0, 1.0, 0.0);
glLineStipple(1, 0xF0F0);
draw_triangle();
/*Chargement de la matrice de base*/
glPopMatrix();
glRotatef(45, 0.0, 0.0, 1.0);
/*Troisième triangle de couleur bleu*/
glColor3f(0.0, 0.0, 1.0);
glLineStipple(1, 0x8888);
draw_triangle();
glFlush();
/*Desactivation des pointillés*/
glDisable(GL_LINE_STIPPLE);
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 1.0, 1.5, 20.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(500, 150);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return EXIT_SUCCESS;
} |
Partager