Almacenamiento de diferentes atributos de vértices en diferentes VBO's

Es posible almacenar diferentes atributos de vértice en diferentes búferes de vértices?

Todos los ejemplos que he visto hasta ahora hacen algo como esto

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);

Y el dibujo se realiza de la siguiente manera:

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);

¿No es posible almacenar datos de posición y datos de color en diferentes VBO? El problema es que no entiendo cómo funcionaría esto porque no puedes unir dos buffers a la vez, ¿verdad?

Si hay una solución simple pero ineficiente, preferiría una solución más complicada pero eficiente porque estoy en un estado de aprendizaje primario y no quiero complicar demasiado las cosas.

Además, si lo que estoy preguntando es posible, ¿es una buena idea o no?

Para aclarar Entiendo cómo podría almacenar diferentes atributos en diferentes VBO. No entiendo cómo los dibujaría más tarde.

Respuestas a la pregunta(1)

Su respuesta a la pregunta