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 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| #include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>
#define WIDTH 640
#define HEIGHT 480
int id_rue = 0;
float viseex = 0,viseey = 0.0,viseez = -1.7142855 * 0.4;
float emplacementx = 0,emplacementy = 0.4,emplacementz = 0;
int a = 0;
int murexterieurx[14] = {1.5,1.5,1.5,1.5,9.5,9.5,9.5,9.5,11,11,11,11,1.5,1.5};
int murexterieury[14] = {0,2.45,0,2.45,0,2.45,0,2.45,0,2.45,0,2.45,0,2.45};
int murexterieurz[14] = {-4,-4,8,8,8,8,0.5,0.5,0.5,0.5,-4,-4,-4,-4};
void rue(){
id_rue=glGenLists(1);
glNewList(id_rue,GL_COMPILE);
glBegin(GL_QUADS);
glColor3f(0.0,0.0,0.0);
glVertex3f(-1,0,-3);
glVertex3f(1,0,-3);
glVertex3f(1,0,3);
glVertex3f(-1,0,3);
glColor3f(0.5,0.5,0.5);
glVertex3f(1,0,3);
glVertex3f(1.1,0.05,3);
glVertex3f(1.1,0.05,-3);
glVertex3f(1,0,-3);
glVertex3f(1.1,0.05,-3);
glVertex3f(1.1,0.05,3);
glVertex3f(1.2,0.05,3);
glVertex3f(1.2,0.05,-3);
glVertex3f(1.2,0.05,3);
glVertex3f(1.2,0.05,-3);
glVertex3f(1.2,0.0,-3);
glVertex3f(1.2,0.0,3);
glVertex3f(1.2,0.0,-3);
glVertex3f(1.2,0.0,3);
glVertex3f(1,0,3);
glVertex3f(1,0,-3);
glVertex3f(-1,0,3);
glVertex3f(-1.1,0.05,3);
glVertex3f(-1.1,0.05,-3);
glVertex3f(-1,0,-3);
glVertex3f(-1.1,0.05,-3);
glVertex3f(-1.1,0.05,3);
glVertex3f(-1.2,0.05,3);
glVertex3f(-1.2,0.05,-3);
glVertex3f(-1.2,0.05,3);
glVertex3f(-1.2,0.05,-3);
glVertex3f(-1.2,0.0,-3);
glVertex3f(-1.2,0.0,3);
glVertex3f(-1.2,0.0,-3);
glVertex3f(-1.2,0.0,3);
glVertex3f(-1,0,3);
glVertex3f(-1,0,-3);
glEnd();
glEndList();
}
void Clavier(unsigned char key, int x, int y)
{
if(key == 'z'){
emplacementz = emplacementz - 0.1;
viseez = viseez - 0.1;
}
if(key == 'q'){
emplacementx = emplacementx - 0.1;
viseex = viseex - 0.1;
}
if(key == 's'){
emplacementz = emplacementz + 0.1;
viseez = viseez + 0.1;
}
if(key == 'd'){
emplacementx = emplacementx + 0.1;
viseex = viseex + 0.1;
}
if(key == 'p'){
int ancienx = viseex;
viseex = 0 - viseez;
viseez = ancienx;
}
glLoadIdentity();
gluLookAt(emplacementx,emplacementy,emplacementz,viseex,viseey,viseez,0,1,0);
glutPostRedisplay();
}
void reshape(int w,int h){
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0,(float) w/h,1.,10.);
}
void init(){
glClearColor(0.0,0.0,1.0,0.0);
rue();
}
void motion(int x, int y)
{
}
void Display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
gluLookAt(emplacementx,emplacementy,emplacementz,viseex,viseey,viseez,0,1,0);
glCallList(id_rue);
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3f(-1,0,-3);
glVertex3f(1,0,-3);
glVertex3f(1,1,-3);
glVertex3f(-1,1,-3);
glEnd();
glFlush();
glutSwapBuffers();
}
int main( int argc, char *argv[ ])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH);
glutInitWindowSize(WIDTH,HEIGHT);
glutInitWindowPosition(50,50);
glutCreateWindow("Fenetre OpenGL");
init();
glutDisplayFunc(Display);
glutPassiveMotionFunc(motion);
glutKeyboardFunc(Clavier);
glutReshapeFunc(reshape);
glutMainLoop(); // lance le gestionnaire glut
return 0;
} |
Partager