Added additional validation logic for debugging

Corrected memory corruption in VBO's!  No longer have random visual artifacts when models with > 65535 triangles are displayed.

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40104
This commit is contained in:
kearwood
2012-09-20 10:51:28 +00:00
parent 57fd737955
commit 0dcd2d19f4
12 changed files with 128 additions and 108 deletions

View File

@@ -103,6 +103,7 @@ void KRModelManager::bindVBO(GLvoid *data, GLsizeiptr size, bool enable_vertex,
while(m_vbosPool.size() + m_vbosActive.size() >= KRENGINE_MAX_VBO_HANDLES || m_vboMemUsed >= KRENGINE_MAX_VBO_MEM) {
if(m_vbosPool.empty()) {
fprintf(stderr, "flushBuffers due to VBO exhaustion...\n");
m_pContext->rotateBuffers();
}
std::map<GLvoid *, vbo_info_type>::iterator first_itr = m_vbosPool.begin();
@@ -116,9 +117,9 @@ void KRModelManager::bindVBO(GLvoid *data, GLsizeiptr size, bool enable_vertex,
m_currentVBO.handle = -1;
GLDEBUG(glGenBuffers(1, &m_currentVBO.handle));
GLDEBUG(glBindBuffer(GL_ARRAY_BUFFER, m_currentVBO.handle));
GLDEBUG(glBufferData(GL_ARRAY_BUFFER, size, data, GL_STATIC_DRAW));
//fprintf(stderr, "glBufferData(GL_ARRAY_BUFFER, %ld, data, GL_STATIC_DRAW)\n", size);
m_currentVBO.size = size;
m_currentVBO.data = data;