Implemented global dynamic texture LOD selection to constrain texture memory usage within bounds

--HG--
extra : convert_revision : svn%3A7752d6cf-9f14-4ad2-affc-04f1e67b81a5/trunk%40108
This commit is contained in:
kearwood
2012-09-26 20:07:48 +00:00
parent a39610a292
commit 63fb848da5
15 changed files with 167 additions and 79 deletions

View File

@@ -104,14 +104,14 @@ 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();
m_pContext->rotateBuffers(false);
}
std::map<GLvoid *, vbo_info_type>::iterator first_itr = m_vbosPool.begin();
vbo_info_type firstVBO = first_itr->second;
GLDEBUG(glDeleteBuffers(1, &firstVBO.handle));
m_vboMemUsed -= firstVBO.size;
m_vbosPool.erase(first_itr);
//fprintf(stderr, "VBO Swapping...\n");
fprintf(stderr, "VBO Swapping...\n");
}
m_currentVBO.handle = -1;
@@ -231,7 +231,7 @@ long KRModelManager::getMemUsed()
return m_vboMemUsed;
}
void KRModelManager::rotateBuffers()
void KRModelManager::rotateBuffers(bool new_frame)
{
m_vbosPool.insert(m_vbosActive.begin(), m_vbosActive.end());
m_vbosActive.clear();