- use vertex array objects to manage vertex buffers.

This commit is contained in:
Christoph Oelckers 2014-07-01 00:51:02 +02:00
commit 9a6bc64381
4 changed files with 34 additions and 53 deletions

View file

@ -109,11 +109,17 @@ FModelVertexBuffer::FModelVertexBuffer()
Models[i]->BuildVertexBuffer(this);
}
glBindVertexArray(vao_id);
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
glBufferData(GL_ARRAY_BUFFER,vbo_shadowdata.Size() * sizeof(FModelVertex), &vbo_shadowdata[0], GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,ibo_shadowdata.Size() * sizeof(unsigned int), &ibo_shadowdata[0], GL_STATIC_DRAW);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableVertexAttribArray(VATTR_VERTEX2);
glBindVertexArray(0);
}
FModelVertexBuffer::~FModelVertexBuffer()
@ -125,24 +131,6 @@ FModelVertexBuffer::~FModelVertexBuffer()
}
//===========================================================================
//
//
//
//===========================================================================
void FModelVertexBuffer::BindVBO()
{
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo_id);
//glVertexPointer(3, GL_FLOAT, sizeof(FModelVertex), &VMO->x);
//glTexCoordPointer(2, GL_FLOAT, sizeof(FModelVertex), &VMO->u);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glEnableVertexAttribArray(VATTR_VERTEX2);
}
//===========================================================================
//
// Sets up the buffer starts for frame interpolation