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 :

Problème avec un VBO qui ne s'affiche pas


Sujet :

OpenGL

  1. #1
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut Problème avec un VBO qui ne s'affiche pas
    Bonjour,

    je voudrai faire un petit programme comparatif entre les différents mode d'affichage de maillages (mode immédiat, vertex array, VBO, ...) et je rencontre un soucis avec l'utilisation des VBOs qui fait que rien ne s'affiche
    je suis certain que c'est une erreur tout conne mais impossible de mettre le nez dessus

    j'ai bien un VBO qui est créé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glGenBuffers(1, &m_vboID);
    ensuite je le rempli :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    glBindBuffer(GL_ARRAY_BUFFER, m_vboID);
    glBufferData(GL_ARRAY_BUFFER, m_nCountVertices * sizeof(vec3f), 0, GL_STATIC_DRAW);
    glBufferSubData(GL_ARRAY_BUFFER, 0, m_nCountVertices * sizeof(vec3f), m_pVertices);
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    j'ai aussi essayé un seul appel à glBufferData (sans glBufferSubData) pour transférer directement la géométrie mais ça ne change rien

    et je fait appel au VBO de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    glBindBuffer(GL_ARRAY_BUFFER, sphere.m_vboID);
    glVertexPointer(3, GL_FLOAT, 0, 0);
     
    glEnableClientState(GL_VERTEX_ARRAY);
    glDrawArrays(GL_TRIANGLES, 0, sphere.getCountVertices());
    glDisableClientState(GL_VERTEX_ARRAY);
     
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    j'ai uploadé mon code complet ici :
    http://shenron.free.fr/glmeshes.zip
    si quelqu'un a le temps d'y regarder
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    j'ai enfin trouvé l'origine de mon problème qui était à la création du vbo ou plus précisément dans le constructeur de la classe CSphere où je faisait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CSphere::CSphere(float fRadius /*= 1.f*/, unsigned int nSlices /*= 4*/, unsigned int nStacks /*= 2*/)
    {
    	//ctor
    	build(fRadius, nSlices, nStacks);	// build the sphere
    	setMode();	// set drawing mode to default
    	m_vboID = 0;
    	if(GLEE_ARB_vertex_buffer_object)
    		glGenBuffersARB(1, &m_vboID);
    	std::cout << "vbo : " << m_vboID << std::endl;
    }
    on voit ici que je crée mon vbo (glGenBuffersARB) après avoir fait appel à la méthode build
    sauf que la méthode build est responsable du remplissage du vbo
    donc forcément si je le rempli avant de le créer
    comme quoi c'était vraiment une erreur toute conne qui m'a fait perdre ma journée
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

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

Discussions similaires

  1. problème avec des cookies qui ne se créent pas :/
    Par healou dans le forum Langage
    Réponses: 9
    Dernier message: 11/07/2011, 13h39
  2. problème avec un portable qui ne s'allume pas
    Par vbcasimir dans le forum Ordinateurs
    Réponses: 6
    Dernier message: 03/10/2006, 22h31
  3. Réponses: 6
    Dernier message: 04/09/2006, 15h48
  4. Réponses: 3
    Dernier message: 16/09/2005, 10h01

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