aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/MemoryTracker.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/MemoryTracker.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/MemoryTracker.cpp')
-rw-r--r--Minecraft.Client/MemoryTracker.cpp70
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