diff options
| author | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
|---|---|---|
| committer | daoge_cmd <3523206925@qq.com> | 2026-03-01 12:16:08 +0800 |
| commit | b691c43c44ff180d10e7d4a9afc83b98551ff586 (patch) | |
| tree | 3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/MemoryTracker.cpp | |
| parent | def8cb415354ac390b7e89052a50605285f1aca9 (diff) | |
Initial commit
Diffstat (limited to 'Minecraft.Client/MemoryTracker.cpp')
| -rw-r--r-- | Minecraft.Client/MemoryTracker.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Minecraft.Client/MemoryTracker.cpp b/Minecraft.Client/MemoryTracker.cpp new file mode 100644 index 00000000..c1652d3b --- /dev/null +++ b/Minecraft.Client/MemoryTracker.cpp @@ -0,0 +1,70 @@ +#include "stdafx.h" +#include "MemoryTracker.h" +#include "..\Minecraft.World\IntBuffer.h" +#include "..\Minecraft.World\ByteBuffer.h" +#include "..\Minecraft.World\FloatBuffer.h" + +unordered_map<int,int> MemoryTracker::GL_LIST_IDS; +vector<int> MemoryTracker::TEXTURE_IDS; + +int MemoryTracker::genLists(int count) +{ + int id = glGenLists(count); + GL_LIST_IDS.insert( pair<int,int>(id,count) ); + return id; +} + +int MemoryTracker::genTextures() +{ + int id = glGenTextures(); + TEXTURE_IDS.push_back(id); + return id; +} + +void MemoryTracker::releaseLists(int id) +{ + AUTO_VAR(it, GL_LIST_IDS.find(id)); + if( it != GL_LIST_IDS.end() ) + { + glDeleteLists(id, it->second); + GL_LIST_IDS.erase(it); + } +} + +void MemoryTracker::releaseTextures() +{ + for (int i = 0; i < TEXTURE_IDS.size(); i++) + { + glDeleteTextures(TEXTURE_IDS.at(i)); + } + TEXTURE_IDS.clear(); +} + +void MemoryTracker::release() +{ + //for (Map.Entry<Integer, Integer> entry : GL_LIST_IDS.entrySet()) + for(AUTO_VAR(it, GL_LIST_IDS.begin()); it != GL_LIST_IDS.end(); ++it) + { + glDeleteLists(it->first, it->second); + } + GL_LIST_IDS.clear(); + + releaseTextures(); +} + +ByteBuffer *MemoryTracker::createByteBuffer(int size) +{ + // 4J - was ByteBuffer.allocateDirect(size).order(ByteOrder.nativeOrder()) + ByteBuffer *bb = ByteBuffer::allocate(size); + return bb; +} + +IntBuffer *MemoryTracker::createIntBuffer(int size) +{ + return createByteBuffer(size << 2)->asIntBuffer(); +} + +FloatBuffer *MemoryTracker::createFloatBuffer(int size) +{ + return createByteBuffer(size << 2)->asFloatBuffer(); +}
\ No newline at end of file |
