From 720e718186e6ec0e76bc08a9cedf9f08afc5e904 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 28 Oct 2021 19:27:57 +0800 Subject: *misc --- Projects/VisualStudio/Editor/Editor.vcxproj | 1 - .../VisualStudio/Editor/Editor.vcxproj.filters | 3 -- Runtime/Graphics/Shader.cpp | 2 +- Runtime/Utilities/DynamicArray.cpp | 0 Runtime/Utilities/DynamicArray.h | 34 ++++++++++++++++++++++ 5 files changed, 35 insertions(+), 5 deletions(-) delete mode 100644 Runtime/Utilities/DynamicArray.cpp 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 @@ - 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 @@ Runtime\Graphics - - Runtime\Utilities - 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 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 +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 -- cgit v1.1-26-g67d0