Armazenamento de diferentes atributos de vértices em diferentes VBO's
possível armazenar atributos de vértice diferentes em buffers de vértice diferente
Todos os exemplos que vi até agora fazem algo assim
float data[] =
{
//position
v1x, v1y, v1z,
v2x, v2y, v2z,
...
vnx, vny, vnz,
//color
c1r, c1g, c1b,
c2r, c2g, c2b,
...
cnr, cng, cnb,
};
GLuint buffname;
glGenBuffers(1, &buffname);
glBindBuffer(GL_ARRAY_BUFFER, buffname);
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
E o desenho é feito algo como isto:
glBindBuffer(GL_ARRAY_BUFFER, buffname);
glEnableVertexAttrib(position_location);
glEnableVertexAttrib(color_location);
glVertexAttribPointer(position_location, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(color_location, 3, GL_FLOAT, GL_FALSE, 0, (void*)(3*n));
glDrawArrays(GL_TRIANGLES, 0, n/3);
glDisableVertexAttrib(position_location);
glDisableVertexAttrib(color_location);
glBindBuffer(GL_ARRAY_BUFFER, 0);
Não é possível armazenar dados de posição e dados de cores em diferentes VBOs? O problema é que não entendo como isso funcionaria porque você não pode vincular dois buffers de uma só vez, pod
Se houver uma solução simples, mas ineficiente, eu a preferiria a uma solução mais complicada, mas eficiente, porque estou no estado de aprendizado primário e não quero complicar muito as coisa
Além disso, se o que estou perguntando é possível, é uma boa ideia ou nã
Esclarecer Eu entendo como eu poderia armazenar atributos diferentes em diferentes VBO's. Não entendo como os desenharia depoi