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 :

[SFML] Bug avec le chargement des textures [OpenGL 3.x]


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut [SFML] Bug avec le chargement des textures
    Bonjour,

    j'ai un bug que je n'arrive pas à expliquer.
    Lorsque que j'exécute se code j'ai le comportement souhaité :
    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
    /***********************VAO 3DObject***********************/
    if (glIsVertexArray(this->VAO_Mesh == GL_TRUE))
    	glDeleteVertexArrays(1, &this->VAO_Mesh);
    glGenVertexArrays(1, &this->VAO_Mesh);
    glBindVertexArray(this->VAO_Mesh);
    	glBindBuffer(GL_ARRAY_BUFFER, this->VBO_Vertices);
    		glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    		glEnableVertexAttribArray(0);
    	glBindBuffer(GL_ARRAY_BUFFER, 0);
    	glBindBuffer(GL_ARRAY_BUFFER, this->VBO_Normals);
    		glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    		glEnableVertexAttribArray(1);
    	glBindBuffer(GL_ARRAY_BUFFER, 0);
    	if (!this->uvs.empty())
    	{
    		glBindBuffer(GL_ARRAY_BUFFER, this->VBO_UVs);
    			glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    			glEnableVertexAttribArray(2);
    		glBindBuffer(GL_ARRAY_BUFFER, 0);
    	}
    glBindVertexArray(0);
    sf::Texture t;
    t.loadFromFile("../refactoring/res/images/grass.jpg");
    Nom : Capture.PNG
Affichages : 386
Taille : 41,3 Ko

    Mais lorsque j'exécute ce code j'obtient ceci :
    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
    sf::Texture t;
    t.loadFromFile("../refactoring/res/images/grass.jpg");
    /***********************VAO 3DObject***********************/
    if (glIsVertexArray(this->VAO_Mesh == GL_TRUE))
    	glDeleteVertexArrays(1, &this->VAO_Mesh);
    glGenVertexArrays(1, &this->VAO_Mesh);
    glBindVertexArray(this->VAO_Mesh);
    	glBindBuffer(GL_ARRAY_BUFFER, this->VBO_Vertices);
    		glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    		glEnableVertexAttribArray(0);
    	glBindBuffer(GL_ARRAY_BUFFER, 0);
    	glBindBuffer(GL_ARRAY_BUFFER, this->VBO_Normals);
    		glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    		glEnableVertexAttribArray(1);
    	glBindBuffer(GL_ARRAY_BUFFER, 0);
    	if (!this->uvs.empty())
    	{
    		glBindBuffer(GL_ARRAY_BUFFER, this->VBO_UVs);
    			glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));
    			glEnableVertexAttribArray(2);
    		glBindBuffer(GL_ARRAY_BUFFER, 0);
    	}
    glBindVertexArray(0);
    Nom : Capture.PNG
Affichages : 416
Taille : 38,9 Ko

    Et franchement je ne vois pas pourquoi le chargement d'une texture serait affecté par un VAO ? Oo
    L'erreur vient de glBindTexture(GL_TEXTURE_2D, 0) à la ligne 526.

    Merci d'avance,
    Robin

  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
    Si je me souviens bien (et si ça n'as pas changé entre temps) certaines fonctions de la SFML modifient les états d'OpenGL. Néanmoins il y a une fonction de la SFML qui permet de sauvegarder/restaurer les états OpenGL.
    Par exemple la doc nous dis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    glDraw...
     
    window.pushGLStates();
     
    window.draw(...);
     
    window.popGLStates();
     
    glDraw...
    C'est une méthode non optimisé , que l'on doit faire(on peut l'optimiser) lorsque l'on mixe des commandes OpenGL avec le module graphique sfml-graphics.
    Il faudrait essayer avec sf::Image (ou similaire) puis recréer la texture dans la mémoire pour OpenGL( sf::Texture fais partie du module graphique).

  3. #3
    Membre confirmé Avatar de robinsondesbois
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 171
    Par défaut
    Bonjour,

    Le problème viens effectivement de là.
    En utilisant des sf::Image le problème est réglé.

    Merci beaucoup !!!

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

Discussions similaires

  1. Bugs avec QRadioButton dans des QGroupBox
    Par Deamon dans le forum Qt
    Réponses: 2
    Dernier message: 07/06/2010, 09h26
  2. [AJAX] Bug avec un exemple des tutoriaux ajax
    Par Paco75 dans le forum AJAX
    Réponses: 7
    Dernier message: 31/05/2010, 21h59
  3. Réponses: 0
    Dernier message: 05/11/2009, 18h06
  4. JOGL et problème au chargement des textures
    Par GLDavid dans le forum OpenGL
    Réponses: 2
    Dernier message: 20/05/2008, 10h14
  5. Chargement des textures pose probleme
    Par epsilon777 dans le forum OpenGL
    Réponses: 1
    Dernier message: 13/05/2008, 05h07

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