关于OpenGL里使用多个缓冲区对象的问题
RT~~~本人定义了两个缓冲区对象,并想将他们分别渲染出来。在OpenGL里要怎么实现呢?
写入数据时:
for (int i = 0;i < nmeshes;i++)
{
Lib3dsMesh *mesh = f3ds->meshes[i];
...;//由3ds文件中读取出需要数据
glGenBuffers(1,&m_Vertex[i]);
glGenBuffers(1,&m_Index[i]);
glBindBuffer(GL_ARRAY_BUFFER,m_Vertex[i]);
glBufferData(GL_ARRAY_BUFFER,(sizeof(float) * 9 * mesh->nfaces) + (sizeof(float) * 3 * mesh->nvertices),TotleV,GL_STATIC_DRAW);
glVertexPointer(3,GL_FLOAT,0,BUFFER_OFFSET(0));
glNormalPointer(GL_FLOAT,0,BUFFER_OFFSET(V_size));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index[i]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(unsigned short) * 3 * mesh->nfaces,tempIndex,GL_STATIC_DRAW);
DrawCount[i] = mesh->nfaces * 3;
}
渲染时:
glBindBuffer(GL_ARRAY_BUFFER,m_Vertex[0]);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index[0]);
glDrawElements(GL_TRIANGLES,DrawCount[0],GL_UNSIGNED_SHORT,NULL);
glBindBuffer(GL_ARRAY_BUFFER,m_Vertex[1]);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,m_Index[1]);
glDrawElements(GL_TRIANGLES,DrawCount[1],GL_UNSIGNED_SHORT,NULL);
这样渲染得话,渲染出来的图形会出错……
OpenGL能像D3D那样能对不同的缓冲区对象进行渲染吗?