j'ai créer une rue en opengl mais je n'en voit qu'une petite partie mais si j'avance, la rue apparait a la place du vide .
que dois je faire pour voire ma rue en entier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
}