IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

fenetre windows avec contexte openGL+glu


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 14
    Points
    14
    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 : 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  
     
    }

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 14
    Points
    14
    Par défaut
    Voila le projet pour visual studio:

    http://depositfiles.com/files/q4609ko1t

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    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

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 14
    Points
    14
    Par défaut
    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.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    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

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    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 : 14
    Points
    14
    Par défaut
    Dac merci pour tout ces éclaircissement

    Je met la discussion en résolue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/02/2011, 16h39
  2. Réponses: 1
    Dernier message: 11/05/2007, 16h36
  3. import fichier vrml avec coin3d dans un contexte openGL
    Par kikodingo dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/05/2007, 22h28
  4. Réponses: 16
    Dernier message: 18/03/2007, 13h30
  5. Le dessin avec VC dans une fenetre windows
    Par ccensam dans le forum MFC
    Réponses: 3
    Dernier message: 03/11/2005, 23h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo