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 :
et pourtant j'ai initialiser mon VBO et l'ai copier au pixel buffer avec GL_PIXEL_PACK_BUFFER_EXTCode:
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(); }
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.Code:
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"); }
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