Bonjour (ou Bonsoir),
J'ai créer cette discussion car j'ai un problème pour créer un projet utilisant openGL dans une fenêtre Windows. Enfaite j'ai déjà créer ce projet dans une fenêtre SDL en me basant sur un tuto trouvé sur un autre site :
Voila une vidéo de mon projet( ce n'est pas vraiment utile mais bon si vous avez des conseille on sait jamais):
Et j'aimerais le porter dans une fenêtre Windows.
Je suis un débutant en ce qui concerne openGL et la POO donc j'imagine que mon erreur doit être relativement simple pour quelqu'un de plus expérimenter.
Premièrement je veut simplement afficher une sphère dans cette fenêtre en utilisant la bibliothèque glu notamment avec GLUquadric. Et le problème est que ça m'affiche simplement un écran noir.
J'ai récupérer le code pour créer une fenêtre Windows avec contexte openGL ici:
http://tcuvelier.developpez.com/tuto...enetre-opengl/
Bon je vais mettre les parti importante du code en espérant que ça suffit mais sinon indiquai moi si il faut que j’envoie tout.
Voila le corps de mon programme en SDL
la fonction dessiner:
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 SDL_Event event; SDL_Init(SDL_INIT_VIDEO); atexit(SDL_Quit); SDL_WM_SetCaption("SDL GL Application", NULL); SDL_SetVideoMode(640, 480, 32, SDL_OPENGL); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective(80,(double)640/480,1,1000); glEnable(GL_DEPTH_TEST); for (;;) { /*start_time = SDL_GetTicks();*/ while (SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: exit(0); break; } } Dessiner(); }
et voila comment je l'ai retranscrit pour Windows:
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 void Dessiner( void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); gluLookAt(4,0,1,0,0,0,0,0,1); glColor3ub(255,0,0); glPushMatrix(); glTranslated(A.x_0,A.y_0,A.z_0); GLUquadric* params = gluNewQuadric(); gluQuadricDrawStyle(params,GLU_FILL); gluSphere(params, A.rayon ,100,1000); gluDeleteQuadric(params); glPopMatrix(); glFlush(); SDL_GL_SwapBuffers(); }
Pour le main:
Pour setup scene
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 createWindow(wcstring, 1000, 600); // Create our OpenGL window openglContext.setupScene(); // Setup our OpenGL scene /** This is our main loop, it continues for as long as running is true */ while (running) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { // If we have a message to process, process it if (msg.message == WM_QUIT) { running = false; // Set running to false if we have a message to quit } else { TranslateMessage(&msg); DispatchMessage(&msg); } } else { // If we don't have a message to process openglContext.renderScene(); // Render our scene (which also handles swapping of buffers)*/ } } return (int) msg.wParam; }
et pour le rendu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void OpenGLContext::setupScene(void) { glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective(80,(double)640/480,1,1000); glEnable(GL_DEPTH_TEST); }
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 void OpenGLContext::renderScene(void) { glViewport(0, 0, windowWidth, windowHeight); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity( ); gluLookAt(4,0,1,0,0,0,0,0,1); glColor3ub(255,0,0); glPushMatrix(); glTranslated(0,0,0); GLUquadric* params = gluNewQuadric(); gluQuadricDrawStyle(params,GLU_FILL); gluSphere(params,1 ,100,1000); gluDeleteQuadric(params); glPopMatrix(); glFlush(); SwapBuffers(hdc); // Swap buffers so we can see our rendering }
Partager