summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Projects/VisualStudio/Editor/Editor.vcxproj1
-rw-r--r--Projects/VisualStudio/Editor/Editor.vcxproj.filters3
-rw-r--r--Runtime/Graphics/Shader.cpp2
-rw-r--r--Runtime/Utilities/DynamicArray.cpp0
-rw-r--r--Runtime/Utilities/DynamicArray.h34
5 files changed, 35 insertions, 5 deletions
diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj b/Projects/VisualStudio/Editor/Editor.vcxproj
index b55d87d..5d1a70a 100644
--- a/Projects/VisualStudio/Editor/Editor.vcxproj
+++ b/Projects/VisualStudio/Editor/Editor.vcxproj
@@ -229,7 +229,6 @@
<ClCompile Include="..\..\..\Runtime\Threading\Thread.cpp" />
<ClCompile Include="..\..\..\Runtime\Threading\WorkThread.cpp" />
<ClCompile Include="..\..\..\Runtime\Utilities\Base64.cpp" />
- <ClCompile Include="..\..\..\Runtime\Utilities\DynamicArray.cpp" />
<ClCompile Include="..\..\..\Runtime\Utilities\Utf8.cpp" />
</ItemGroup>
<ItemGroup>
diff --git a/Projects/VisualStudio/Editor/Editor.vcxproj.filters b/Projects/VisualStudio/Editor/Editor.vcxproj.filters
index 7959aa9..81d6612 100644
--- a/Projects/VisualStudio/Editor/Editor.vcxproj.filters
+++ b/Projects/VisualStudio/Editor/Editor.vcxproj.filters
@@ -372,9 +372,6 @@
<ClCompile Include="..\..\..\Runtime\Graphics\UIQuad.cpp">
<Filter>Runtime\Graphics</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\Runtime\Utilities\DynamicArray.cpp">
- <Filter>Runtime\Utilities</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\Editor\GUI\Dock.h">
diff --git a/Runtime/Graphics/Shader.cpp b/Runtime/Graphics/Shader.cpp
index 3d4a374..bf7faf6 100644
--- a/Runtime/Graphics/Shader.cpp
+++ b/Runtime/Graphics/Shader.cpp
@@ -86,7 +86,7 @@ void Shader::CompileProgram(const char* vert, const char* frag, bool keepSrc)
glAttachShader(m_ProgramID, m_FragID);
glLinkProgram(m_ProgramID);
checkCompileshaderErrorors(m_FragID, "PROGRAM");
- // keep src
+ // keep src?
if (keepSrc)
{
m_VertSrc = vert;
diff --git a/Runtime/Utilities/DynamicArray.cpp b/Runtime/Utilities/DynamicArray.cpp
deleted file mode 100644
index e69de29..0000000
--- a/Runtime/Utilities/DynamicArray.cpp
+++ /dev/null
diff --git a/Runtime/Utilities/DynamicArray.h b/Runtime/Utilities/DynamicArray.h
index e69de29..16680bc 100644
--- a/Runtime/Utilities/DynamicArray.h
+++ b/Runtime/Utilities/DynamicArray.h
@@ -0,0 +1,34 @@
+#pragma once
+
+enum { kDynamicArrayThreshold = 64 };
+
+// 阈值之内在栈上保存,超过阈值在堆上保存,并自动释放
+template<typename T>
+class DynamicArray
+{
+public:
+ DynamicArray(int capacity)
+ {
+ if (capacity * sizeof(T) > kDynamicArrayThreshold)
+ {
+ m_Data = malloc(capacity * sizeof(T));
+ }
+ else
+ {
+ m_Data = alloca(capacity * sizeof(T));
+ }
+ }
+ ~DynamicArray()
+ {
+ delete[] m_Data;
+ }
+
+private:
+ void* operator new(std::size_t);
+
+ T* m_Data;
+
+};
+
+//https://www.jianshu.com/p/7737dab9c32b
+//https://blog.csdn.net/WUDAIJUN/article/details/9273339 \ No newline at end of file