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 :

GL_ARRAY_BUFFER dans VBO


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut GL_ARRAY_BUFFER dans VBO
    j'ai lu un tutoriel vbo et j'ai implementer mon vbo.

    Je ne maitrise encore pas bien et j'aimerais quelque précision :

    1)quand je dessine mon VBO j'utilise le mode GL_ARRAY_BUFFER comme 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
     
    void drawVBO(void){
    	glBindBuffer(GL_ARRAY_BUFFER, vbo_vertices_handle);
    	checkGLErrors("draw1 vbo");
    	glVertexPointer  ( 4, GL_FLOAT,0, BUFFER_OFFSET(0));
    	checkGLErrors("draw2 vbo");
    	glEnableClientState(GL_VERTEX_ARRAY);
    	checkGLErrors("draw3 vbo");
    	glColor3f(1, 0, 1);
    	glDrawArrays( GL_TRIANGLES, 0,4);
    	checkGLErrors("draw4 vbo");
    	glDisableClientState(GL_VERTEX_ARRAY);
    	checkGLErrors("draw5 vbo");
    	glutSwapBuffers();
    }
    et pourtant j'ai initialiser mon VBO et l'ai copier au pixel buffer avec GL_PIXEL_PACK_BUFFER_EXT

    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
     
    void initVBO(void){
    	glGenBuffers(1, &vbo_vertices_handle);
    	glBindBuffer(GL_PIXEL_PACK_BUFFER_EXT, vbo_vertices_handle);
    	glBufferData(GL_PIXEL_PACK_BUFFER_EXT, texSize*texSize*4*sizeof(float),NULL, GL_STREAM_DRAW);
    	    /* on specifie les donnees */
    	//glBufferSubData(GL_PIXEL_PACK_BUFFER_EXT, 0, texSize*texSize*4*sizeof(float),vbo_vertices_handle);
    	glBindBuffer(GL_PIXEL_PACK_BUFFER_EXT, 0); 
    	checkGLErrors("init vbo");
    }
    void copyFBOtoPBO(void){
    	glReadBuffer(attachmentpoints[!flag]);
    	checkGLErrors("read vbo");
    	glBindBuffer(tGL_PIXEL_PACK_BUFFER_EXT, vbo_vertices_handle);
    	checkGLErrors("bind vbo");
    	glReadPixels(0, 0, texSize, texSize, GL_RGBA, GL_FLOAT, 0);
    	checkGLErrors("read pixel vbo");
    	glReadBuffer(GL_NONE);
    	glBindBufferARB(targetVBO, 0 );
    	checkGLErrors("end vbo");
    }
    Comme ceci je n'ai pas d'erreur (enfin rien ne s'affiche mais bon)par contre si je met tout en GL_PIXEL_PACK_BUFFER_EXT ou GL_ARRAY_BUFFER j'ai une erreur de segmentation sur le glDrawArrays().est ce normal? je ne comprend pas bien ce point la.

    2) dans le tutoriel il y a une ligne.."on specifie les donnée" avec glBufferSubData mais comme j'ai vu d'autre tutoriel sans cette ligne je l'ai pas utiliser. Enfin, surtout mes données sont dans mon fbo dans une texture et non dans un tableau comme dans le tutoriel.

    si qqun peut m'eclaircir un peu sur ces deux point ou l'un deux sa serait sympa.

    mercii,
    Michael

  2. #2
    Membre éprouvé Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Par défaut
    Salut !

    J'ai cette étrange impression que tu confonds VBO et PBO.

    Les VBOs sont des tableaux de vertex (ou vertices en français) "optimisés". Ils permettent en théorie d'accélérer l'affichage. Si c'est ce que tu veux utiliser(et il me semble que c'est çà), le bon argument est : GL_ARRAY_BUFFER.

    Les PBOs permettent quand à eux d'accélérer les transfères entre CPU et GPU de pixels. Ils sont souvent utilisés pour récupérer le résulat d'un rendu. Si c'est ce que tu veux utiliser le bon argument est : GL_PIXEL_PACK_BUFFER_EXT.

    Bon coding !

    @+

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    tout d'abord merci de m'avoir repondu!

    je ne savait pas que sa accelerai le transfert, je comprend maintenant...en fait j'utilise GL_PIXEL_PACK_BUFFER_EXT pour le transfer FBO->PBO et j'affiche avec les vertex array avec le GL_ARRAY.

    meme si je n'arrive toujours pas a afficher quelquechose..lol..je v mettre resolu pour cette question!

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

Discussions similaires

  1. Dans OEM erreurs VBO-1508 et VTO-2013 après reinstallation
    Par mandala37 dans le forum Administration
    Réponses: 0
    Dernier message: 22/07/2010, 17h24
  2. Multi texture dans avec les VBO
    Par yvesall dans le forum OpenGL
    Réponses: 5
    Dernier message: 28/04/2009, 01h05
  3. VBO dans une display list?
    Par ShevchenKik dans le forum OpenGL
    Réponses: 3
    Dernier message: 25/09/2008, 15h04
  4. VBO dans une class : pas d'affichage
    Par Naelhem dans le forum OpenGL
    Réponses: 1
    Dernier message: 23/09/2008, 15h09
  5. Réponses: 23
    Dernier message: 23/03/2006, 20h09

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