Bonjour à tous,
Dans un logiciel utilisant OpenGL, je suis un peu perdu avec cette instruction glEnableVertexAttribArray et son antonyme.
En fait, il n'y a jamais de glDisableVertexAttribArray ce qui maintenant me semble curieux ...
En fait, dans la pratique, où devrait-on placer glEnableVertexAttribArray et glDisableVertexAttribArray ?
J'initialise mes VertexArrays
Dans une autre fonction, je rempli mes buffers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 glGenVertexArrays(1,&test.vao); glBindVertexArray(test.vao); glEnableVertexAttribArray(1); glEnableVertexAttribArray(0);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 glGenBuffers(1,&test.tex); glBindBuffer(GL_ARRAY_BUFFER,test.tex); glBufferData(GL_ARRAY_BUFFER,sizeof(float)*dataTex.size(), dataTex, GL_STATIC_DRAW); glVertexAttribPointer(1,2,GL_FLOAT,GL_FALSE,0,NULL); glGenBuffers(1,&test.pos); glBindBuffer(GL_ARRAY_BUFFER,test.pos); glBufferData(GL_ARRAY_BUFFER,sizeof(float)*dataPos.size(), dataPos, GL_STATIC_DRAW); glVertexAttribPointer(0,2,GL_FLOAT,GL_FALSE,0,NULL);
dans une autre fonction, ensuite j'utilise le shader
A la relecture de ce code, je sens qu'il y a quelque chose de louche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 StateGL::disable(GL_BLEND); StateGL::BlendFunc(GL_ONE, GL_ONE); shaderSplash->use(); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, tex_splash->getID()); glDrawArrays(GL_TRIANGLE_STRIP,0,4); shaderSplash->unuse();avec les glEnableVertexAttribArray.
J'ai bien relu la documentation, mais je ne saisis pas leur utilisation au quotidien dans le code.
Tout le logiciel fonctionne de cette façon (enfin sous linux avec une carte nvidia)
Pouvez vous me dire ce qui ne va pas ?
En vous remerciant par avance !
Partager