4 #include <unordered_map>
13 using std::unordered_map;
21 VBOManager::VBOManager(
Renderer* renderer): rwLock(
"vbomanager-rwlock") {
26 for (
auto it =
vbos.begin(); it !=
vbos.end(); ++it) {
34 auto vboManagedIt =
vbos.find(vboId);
35 if (vboManagedIt !=
vbos.end()) {
36 auto vboManaged = vboManagedIt->second;
37 vboManaged->incrementReferenceCounter();
48 vboManaged->incrementReferenceCounter();
49 vbos[vboManaged->getId()] = vboManaged;
60 auto vboManagedIt =
vbos.find(vboId);
61 if (vboManagedIt !=
vbos.end()) {
62 auto vboManaged = vboManagedIt->second;
63 vboManaged->incrementReferenceCounter();
75 auto vboManagedIt =
vbos.find(vboId);
76 if (vboManagedIt !=
vbos.end()) {
77 auto vboManaged = vboManagedIt->second;
78 if (vboManaged->decrementReferenceCounter()) {
79 auto vboIds = vboManaged->getVBOIds();
83 vbos.erase(vboManagedIt);
90 Console::println(
string(
"Warning: vbo not managed by vbo manager: ") + vboId);
unordered_map< string, VBOManager_VBOManaged * > vbos
VBOManager_VBOManaged * addVBO(const string &vboId, int32_t ids, bool useGPUMemory, bool shared, bool &created)
Adds a VBO to manager or retrieve VBO if existing.
VBOManager_VBOManaged * getVBO(const string &vboId)
Retrieves a VBO managed from manager.
friend class VBOManager_VBOManaged
void removeVBO(const string &vboId)
Removes a VBO from manager.
virtual vector< int32_t > createBufferObjects(int32_t buffers, bool useGPUMemory, bool shared)=0
Generate buffer objects for vertex data and such.
virtual void disposeBufferObjects(vector< int32_t > &bufferObjectIds)=0
Disposes a frame buffer object.
Implementation for read/write lock.
void writeLock()
Locks for writing / exclusive lock.
void unlock()
Unlocks this read write lock.
void readLock()
Locks for reading / shared lock.