From 720e718186e6ec0e76bc08a9cedf9f08afc5e904 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 28 Oct 2021 19:27:57 +0800 Subject: *misc --- Runtime/Graphics/Shader.cpp | 2 +- Runtime/Utilities/DynamicArray.cpp | 0 Runtime/Utilities/DynamicArray.h | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) delete mode 100644 Runtime/Utilities/DynamicArray.cpp (limited to 'Runtime') 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