Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux
Développement 2D, 3D et Jeux Forum développement 2D, 3D et Jeux. Avant de poster : Les FAQs Programmation 2D, 3D et Jeux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 27/11/2012, 18h41   #1
rAyyy
Invité de passage
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2012
Messages : 25
Points : 4
Points : 4
Par défaut fenetre windows avec contexte openGL+glu

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 :
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 :
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 :
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 :
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 :
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  
 
}
rAyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2012, 23h57   #2
rAyyy
Invité de passage
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2012
Messages : 25
Points : 4
Points : 4
Voila le projet pour visual studio:

http://depositfiles.com/files/q4609ko1t
rAyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 14h00   #3
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 777
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 777
Points : 43 046
Points : 43 046
Bonjour,

Le tuto que vous montrez est un tuto OpenGL 4 (3 et 4). Les fonction GLU* ne sont absolument plus disponible à partir de OpenGL 3. J'imagine que c'est une bonne raison pour ne pas fonctionner.
De plus, pourquoi ne pas garder votre fenêtre SDL, qui est compatible avec Windows ?
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/11/2012, 15h21   #4
rAyyy
Invité de passage
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2012
Messages : 25
Points : 4
Points : 4
Merci pour ta réponse LittleWhite.
C'est étrange tout de même qu'il n'y a pas de message d'erreur.
Donc j'imagine qu'il faut que je créer moi même une fonction pour dessiner une sphère?
Il n'y a pas de bibliothèque du même type que glu pour OpenGL 3 ou + ?

J'ai simplement voulu changer de fenêtre pour tester, j'ai pas vraiment de motivation.Je suis pas un expert en programmation donc je me lance des petits défi pour apprendre.
D’ailleurs après je compte bien essayer de transposer le projet sur une fenêtre Qt.
rAyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2012, 22h08   #5
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 777
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2008
Messages : 10 777
Points : 43 046
Points : 43 046
Il n'y a pas d'erreurs car vous ne faites pas de glGetError()

Non, y a rien qui remplace GLU,car cela se fait plus ou moins facilement (et puis une sphère, c'est juste charger un .obj et hop), ou refaire l'équation mathématique pour générer les points (et hop aussi ) )
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/11/2012, 23h04   #6
rAyyy
Invité de passage
 
Homme
Étudiant
Inscription : octobre 2012
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2012
Messages : 25
Points : 4
Points : 4
Dac merci pour tout ces éclaircissement

Je met la discussion en résolue.
rAyyy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h01.


 
 
 
 
Partenaires

Hébergement Web