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

OpenGL Discussion :

Probleme OpenGL: pas de triangles affichés [OpenGL 3.x]


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut Probleme OpenGL: pas de triangles affichés
    Salut tout le monde sur le forum !
    Bon voilà, il y a quelques jours, je me suis mis à visionner des tutos pour programmer avec l'API OpenGL !
    Mais, lorsque j'essais d'afficher des triangles avec les VBOs il ne ce passe rien, je ne comprend pas dutout, c'est pour ça que je demande de l'aide .
    Pour info les tutoriels viennent d'ici
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Par défaut
    Bonour, merci d'avoir mis les sources, ton problème viens d'un oublie de SDL_GL_SwapWindow(mWindow); (en tout cas en le mettant on voit un carré rose )
    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
     
    void MainGame::drawGame()
    {
         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) ;
         glClearDepth(1.0) ;
     
         glEnableClientState(GL_VERTEX_ARRAY) ;
     
         colorShader.use() ;
     
         m_sprite.Sprite_Draw() ;
     
         colorShader.unse() ;
         SDL_GL_SwapWindow(mWindow);
    }
    Autre remarque: lors de la lecture d'erreur pour le link, il ne faut pas détruire le program avant glGetProgramInfoLog
    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
     
    if(!infoLog){return ;}
     
            glGetProgramInfoLog(programID, infoLogLenth, &infoLogLenth, infoLog)     ;
            std::cout << "error "<< '\n';
            std::cout << infoLog << '\n' ;
            std::cout << __FILE__  << __LINE__ << '\n' ;
            std::cout << "Impossible de linker le Program !\n" ;
     
            delete [] infoLog ;
            glDeleteProgram(programID) ;
            glDetachShader(programID, vertexID) ;
            glDetachShader(programID, fragmentID) ;
            glDeleteShader(vertexID) ;
            glDeleteShader(fragmentID) ;
            return ;

  3. #3
    Membre habitué
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    Merci pour ta réponse !
    J'ai corrigé les erreurs comme tu me les a indiquées, la fenetre s'ouvre avec une couleur de fond, mais le sprite n'est pas afficher
    Pour info, j'utilise Elementary OS et ma version de openGL est 3.0

  4. #4
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Par défaut
    J'ai trouvé
    il faut changer cette ligne : sprite.cpp ligne 74
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, vertice) ;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0) ;
    En effet lors de l'utilisation des VBO, le dernier argument est l'adresse dans le VBO, dans ton cas il n'y a qu'un seul tableau, donc l'adresse est 0.
    PS: pour le SDL_GL_SwapWindow je n'avais pas vu qu'il était dans la partie de gestion de fps que j'avais enlevé vu qu'il me manquait un fichier timer.hxx

  5. #5
    Membre habitué
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Août 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 6
    Par défaut
    ça ne marche toujours pas ?
    Meme sur une autre distibution linux que j'ai mise en machine virtuel
    mais quand j'utilise glBegin() avec les fonctions glVertex*() et glEnd() pour déssiner, le triangle est bien affiché .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    glBegin(GL_TRIANGLES) ;
            glColor3f(1.0, 1.0, 1.0) ;
            glVertex2f(0, 0) ;
            glVertex2f(0, 500) ;
            glVertex2f(500, 500) ;
        glEnd() ;
    Nom : Capture du 2016-09-04 21:50:08.png
Affichages : 217
Taille : 24,7 Ko

  6. #6
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Par défaut
    que donne un glxinfo ?
    Par exemple que donne: glxinfo | grep vertex_buffer_object ?
    Si cette commande ne retourne pas de texte, alors il ce peut que les Vertex Buffer Object ne soient pas supporté, dans ce cas il s'agit soit d'un problème de pilote, soit d'une carte/chipset graphique trop ancienne. Un ajout de ligne telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::cout << "OpenGL Vendor: " << glGetString(GL_VENDOR) << std::endl;
    std::cout << "Version: " << glGetString(GL_VERSION) << std::endl;
    après la création de contexte peut être utile.
    Par ailleurs j'ai aussi changer le vertexShader en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #version 130
     
    // in: variables en entrée provenant de OpenGL
    in vec2 position ;
     
    void main()
    {
    	gl_Position	=	vec4(position,0,1.0);
    }
    en pièce jointe les modifications faite, par ailleurs j'ai du commenter le timer à essayer avec et sans pour voir.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Probleme PHP qui ne s'affiche pas
    Par somewere dans le forum 1&1
    Réponses: 4
    Dernier message: 12/12/2007, 17h37
  2. Trouver le probleme mais pas la soluce
    Par orphen dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 24/02/2007, 12h19
  3. [AJAX] Liste déroulante pour afficher les informations en ajax div ?
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/11/2006, 09h06
  4. Sql Server Probleme Truncate / Pas Arrondi
    Par Nathan_2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/05/2006, 19h09
  5. [C++.NET][DX9] pas moyen d'afficher un triangle
    Par NicolasG dans le forum DirectX
    Réponses: 13
    Dernier message: 02/01/2006, 15h55

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