Files
LayaNative2.0/Conch/source/render/Performance/JCVBOManager.cpp
T
2020-11-11 16:17:13 +08:00

66 lines
1.5 KiB
C++

/**
@file JCVBOMgr.cpp
@brief
@author James
@version 1.0
@date 2016_5_18
*/
#include "JCVBOManager.h"
namespace laya
{
JCVBOManager::JCVBOManager()
{
m_nVBOSize = 10240;
m_nCurVBOId = 0;
m_vVBO.resize(20);
m_bInited = false;
}
int JCVBOManager::GetVBO()
{
if (!m_bInited)
{
int nSize = m_vVBO.size();
for (int i = 0; i < nSize; i++)
{
m_vVBO[i] = createVertexBuffer(m_nVBOSize);
}
m_bInited = true;
}
int vbo = m_vVBO[m_nCurVBOId];
m_nCurVBOId++;
if (m_vVBO.size())
{
m_nCurVBOId %= m_vVBO.size();
}
else
{
m_nCurVBOId = 0;
}
return vbo;
}
void JCVBOManager::freeGLResource()
{
int nSize = m_vVBO.size();
glDeleteBuffers(nSize, (const GLuint*)&m_vVBO[0]);
m_bInited = false;
}
void JCVBOManager::ReleaseVBO()
{
m_bInited = false;
m_nCurVBOId = 0;
}
unsigned int JCVBOManager::createVertexBuffer( int totalSize )
{
unsigned int vbo = 0;
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER,totalSize,0,GL_DYNAMIC_DRAW);
return vbo;
}
}
//------------------------------------------------------------------------------
//-----------------------------END FILE--------------------------------