Bonjour a tous.
Voilà, je débute en opengl et j'essaye de m'exercer un petit peu.
Cependant j'ai quelques difficultés. Je n'ai pas trouvé la réponse dans les tutos ou forums. J'éspère que vous pourrez m'éclaircir un peu.
Pour l'instant j'ai créé un cube transparent (j'ai utilisé glBegin(GL_QUADS) et j'ai donc créé les 6 faces). J 'aimerai maintenant appliquer une rotation de 90° (avec un pas, de l'ordre du 10ième de degré) à ce cube autour de son centre de masse, successivement autour de X, puis de Y et enfin de Z, et ainsi de suite cycliquement jusqu'à parvenir à 360° pour revenir au début de cycle. J'ai essayer plusieurs combinaisons de rotations avec glRotated(); mais je n'ai pas réussi à obtenir le résultat souhaité.
voici une partie du code pour le cube
et voici pour la fonction motion:
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 void Display() { glClearColor(0, 0, 0, 0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//réinitialisation du z-buffer glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(4,3,3,0,0,0,0,1,0); // glRotated(angle,1,1,1);?????? glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);//calcul des facteurs de transparence du cube glBegin(GL_QUADS); // trace le quadrilatère cube glColor4f(0.6, 0.5, 0.8,0.5); glNormal3f(0,0,1); glVertex3i(1, 1, 1); glVertex3i(1, -1, 1); glVertex3i(-1, -1, 1); glVertex3i(-1, 1, 1); glColor4f(1, 0.5, 0.3,0.5); glNormal3f(0,0,-1); glVertex3i(1, 1, -1); glVertex3i(1, -1, -1); glVertex3i(-1, -1, -1); glVertex3i(-1, 1, -1); glColor4f(1, 0.7, 0.5,0.5); glNormal3f(1,0,0); glVertex3i(1, 1, 1); glVertex3i(1, -1, 1); glVertex3i(1, -1, -1); glVertex3i(1, 1, -1); glColor4f(1, 0.6, 0.4,0.5); glNormal3f(-1,0,0); glVertex3i(-1, 1, 1); glVertex3i(-1, -1, 1); glVertex3i(-1, -1, -1); glVertex3i(-1, 1, -1); glColor4f(1, 0.5, 1,0.5); glNormal3f(0,1,0); glVertex3i(-1, 1, -1); glVertex3i(-1, 1, 1); glVertex3i(1, 1, 1); glVertex3i(1, 1, -1); glColor4f(1, 0.45, 1,0.5); glNormal3f(0,-1,0); glVertex3i(-1, -1, -1); glVertex3i(-1, -1, 1); glVertex3i(1, -1, 1); glVertex3i(1, -1, -1); glEnd(); glutSwapBuffers(); }
et le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void motion() { angle = angle + vitesse; if (angle > 360) angle=0; glutPostRedisplay(); }
j'ai beau chercher , je n'ai toujours pas réussi , merci de m'apporter une éventuelle réponse.
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 int main (int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(950, 650); glutInitWindowPosition(150,150); glutCreateWindow("cube"); glutFullScreen(); Init(); myinit(); //eclairage glutDisplayFunc(Display); //affichage cube glutReshapeFunc(myReshape); glutIdleFunc(motion); glutKeyboardFunc(key); glutMainLoop(); return (0); }
Partager