diff options
author | chai <chaifix@163.com> | 2021-10-28 19:27:57 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-28 19:27:57 +0800 |
commit | 720e718186e6ec0e76bc08a9cedf9f08afc5e904 (patch) | |
tree | 420a4d4801dec1933eed9b62a8829974a4a24b77 | |
parent | 74c5bd68a9110139aae8ca51067459da909fb10e (diff) |
*misc
-rw-r--r-- | Projects/VisualStudio/Editor/Editor.vcxproj | 1 | ||||
-rw-r--r-- | Projects/VisualStudio/Editor/Editor.vcxproj.filters | 3 | ||||
-rw-r--r-- | Runtime/Graphics/Shader.cpp | 2 | ||||
-rw-r--r-- | Runtime/Utilities/DynamicArray.cpp | 0 | ||||
-rw-r--r-- | Runtime/Utilities/DynamicArray.h | 34 |
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 |