i've wrote a simple quake3 map renderer using vertex arrays but now i would like to use VBOs. I build VBO with this function (i call it during the LoadMap):
void CQuake3BSP::BuildVBOs()
{
CVector3 *T_Verts = new CVector3[m_numOfVerts];
CVector3 *T_Norms = new CVector3[m_numOfVerts];
CVector2 *T_TextCoords = new CVector2[m_numOfVerts];
for(int i=0;i<m_numOfVerts;i++){
T_Verts = m_pVerts.vPosition;
T_Norms = m_pVerts.vNormal;
T_TextCoords = m_pVerts.vTextureCoord;
}
glGenBuffersARB( 1, &m_nVBOVertices );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOVertices );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, m_numOfVerts*sizeof(CVector3), T_Verts, GL_STATIC_DRAW_ARB );
glGenBuffersARB( 1, &m_nVBONormals );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBONormals );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, m_numOfVerts*sizeof(CVector3), T_Norms, GL_STATIC_DRAW_ARB );
glGenBuffersARB( 1, &m_nVBOTexCoords );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOTexCoords );
glBufferDataARB( GL_ARRAY_BUFFER_ARB, m_numOfVerts*sizeof(CVector2), T_TextCoords, GL_STATIC_DRAW_ARB );
glGenBuffersARB(1, &m_nVBOIndices);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_nVBOIndices);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, m_numOfIndices*sizeof(int), m_pIndices, GL_STATIC_DRAW_ARB);
glBindBufferARB( GL_ARRAY_BUFFER_ARB, NULL );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, NULL );
delete [] T_Verts; T_Verts = NULL;
delete [] T_TextCoords; T_TextCoords = NULL;
}
and i THINK it works (i get no error..). The problem is that when i render the map, i have on screen ONLY a single wall! I use this function for rendering:
void CQuake3BSP::RenderLevel()
{
glEnable(GL_VERTEX_ARRAY);
glEnable(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_NORMAL_ARRAY);
glEnable(GL_INDEX_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOTexCoords );
glTexCoordPointer(2,GL_FLOAT,0, 0);
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBONormals );
glNormalPointer( GL_FLOAT, 0, 0 );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, m_nVBOVertices );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, m_nVBOIndices );
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, decal);
glDrawElements(GL_TRIANGLES, m_numOfIndices, GL_UNSIGNED_INT, 0 );
glBindBufferARB( GL_ARRAY_BUFFER_ARB, NULL );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER_ARB, NULL );
glDisable(GL_VERTEX_ARRAY);
glDisable(GL_NORMAL_ARRAY);
glDisable(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
}
where is the error? any help is really welcome!
[Edited by - b3rs3rk on February 28, 2005 7:42:12 AM]