// Define arrays (and create buffer object in first pass)
BindBufferARB(ARRAY_BUFFER_ARB, 1);
// vertex array、color array放在一个VBO中
VertexPointer(4, FLOAT, 0, BUFFER_OFFSET(0));
ColorPointer(4, UNSIGNED_BYTE, 0, BUFFER_OFFSET(256));
BindBufferARB(ELEMENT_ARRAY_BUFFER_ARB, 2); // 绑定index
// Enable arrays
EnableClientState(VERTEX_ARRAY);
EnableClientState(COLOR_ARRAY);
// Initialize data store of buffer object
BufferDataARB(ARRAY_BUFFER_ARB, 320, NULL, STREAM_DRAW_ARB);
// Map the buffer object
float *p = MapBufferARB(ARRAY_BUFFER_ARB, WRITE_ONLY);
// 用指针p修改顶点和颜色数据
// Compute and store data in mapped buffer object
...
// Unmap buffer object and draw arrays
if (UnmapBufferARB(ARRAY_BUFFER_ARB)) {
DrawElements(TRIANGLE_STRIP, 100, UNSIGNED_INT,
BUFFER_OFFSET(0));
}
// Disable arrays
DisableClientState(VERTEX_ARRAY);
DisableClientState(COLOR_ARRAY);
// Other rendering commands
...