23 static void Initialize();
24 static void Shutdown();
27 static void BeginFrame();
28 static void EndFrame();
29 static void SwapQueues();
32 static void RenderQuad(
const glm::vec2& Pos,
const glm::vec2& Size,
const glm::vec4& Color, uint64_t EntityID = 0);
38 const glm::mat4& Transform,
39 const uint32_t IndexCount = 0);
41 static uint32_t GetCurrentFrameIndex();
46 template<
typename TFunction>
47 static void Submit(TFunction&& Function)
49 auto RenderCommand = [](
void* Ptr)
51 auto FunctionPtr = (TFunction*)Ptr;
53 FunctionPtr->~TFunction();
56 auto StorageBuffer = GetRenderCommandQueue().Allocate(RenderCommand,
sizeof(Function));
57 new (StorageBuffer) TFunction(std::forward<TFunction>(Function));
63 static uint32_t GetSamplersCount() {
return SamplerCount; }
64 static void IncrementSamplerCount() { SamplerCount++; }
65 static void DecreaseSamplerCount() { SamplerCount--; }
67 FORCEINLINE
static uint32_t GetFramesInFlight() {
return FramesInFlight; }
69 static void SetPrimitiveTopology(
const ERenderTopology InRenderTopology);
70 FORCEINLINE
static ERenderTopology GetPrimitiveTopology() {
return PrimitiveTopology; }
72 static uint32_t GetRenderQueueIndex();
73 static uint32_t GetRenderQueueSubmissionIndex();
80 static void SetDepthFunction(
const EDepthFunction InDepthFunction);
82 static const char* GetCurrentRenderApiName();
88 inline static ERenderTopology PrimitiveTopology = ERenderTopology::Triangles;
90 inline static glm::vec4 ClearColor = { 0.216f, 0.240f, 0.250f, 1.0f };
91 inline static glm::vec4 DEFAULT_CLEARCOLOR = { 0.250f, 0.250f, 0.250f, 1.0f };
93 inline static uint32_t SamplerCount = 0;
94 inline static uint32_t FramesInFlight = 2;
98 friend class LEditorLayer;