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

questionAnswers(1)

yourAnswerToTheQuestion