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

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();
 
}
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
 
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();
}
et voila comment je l'ai retranscrit pour Windows:

Pour le main:
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;
}
Pour setup scene
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);
 
}
et pour le rendu

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  
 
}