Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité régulier
    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 : 6
    Points
    6

    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  
     
    }

  2. #2
    Invité régulier
    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 : 6
    Points
    6

    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 Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    15 543
    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 : 15 543
    Points : 71 872
    Points
    71 872

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

  4. #4
    Invité régulier
    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 : 6
    Points
    6

    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 Alexandre Laurent
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    15 543
    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 : 15 543
    Points : 71 872
    Points
    71 872

    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
    La rubrique a aussi un blog !

    Ma page sur DVP
    Mon Portfolio

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

  6. #6
    Invité régulier
    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 : 6
    Points
    6

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •