根据OpenGL所支持VBO的情况,有三种方式执行渲染
(1)支持OpenGL 1.5,使用标准的VBO函数
// 设置顶点缓冲
glGenBuffers(1, &iVertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_list),
vertex_list, GL_STATIC_DRAW);
// 设置索引缓冲
glGenBuffers(1, &iIndexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iIndexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(index_list),
index_list, GL_STATIC_DRAW);
(1)支持OpenGL 1.5,使用标准的VBO函数
// 设置顶点缓冲
glGenBuffers(1, &iVertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, iVertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertex_list),
vertex_list, GL_STATIC_DRAW);
// 设置索引缓冲
glGenBuffers(1, &iIndexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, iIndexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(index_list),
index_list, GL_STATIC_DRAW);
(2)不支持OpenGL 1.5,但以ARB扩展的形式支持VBO
glGenBuffersARB(1, &iVertexBuffer);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, iVertexBuffer);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertex_list),
vertex_list, GL_STATIC_DRAW_ARB);
glGenBuffersARB(1, &iIndexBuffer);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iIndexBuffer);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(index_list),
index_list, GL_STATIC_DRAW_ARB);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, iVertexBuffer);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertex_list),
vertex_list, GL_STATIC_DRAW_ARB);
glGenBuffersARB(1, &iIndexBuffer);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iIndexBuffer);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, sizeof(index_list),
index_list, GL_STATIC_DRAW_ARB);
(3)不支持VBO,使用Vertex Array代替