LkEngine 0.1.2
 
Loading...
Searching...
No Matches
OpenGLRenderCommandBuffer.h
1#pragma once
2
3#include "LkEngine/Renderer/RenderCommandBuffer.h"
4
5
6namespace LkEngine {
7
9 {
10 public:
11 LOpenGLRenderCommandBuffer(const uint32_t Count = 0, std::string_view InDebugName = "");
12 LOpenGLRenderCommandBuffer(std::string_view InDebugName, const bool InSwapchain);
14
15 virtual void Begin() override;
16 virtual void End() override;
17 virtual void Submit() override;
18
19 virtual float GetExecutionGpuTime(const uint32_t FrameIndex, const uint32_t QueryIndex = 0) const override
20 {
21 if ((QueryIndex == UINT32_MAX) || ((QueryIndex / 2) >= TimestampNextAvailableQuery / 2))
22 {
23 return 0.0f;
24 }
25
26 return ExecutionGpuTimes[FrameIndex][(QueryIndex / 2)];
27 }
28
29 virtual const FPipelineStatistics& GetPipelineStatistics(const uint32_t FrameIndex) const override;
30
31 virtual uint32_t BeginTimestampQuery() override;
32 virtual void EndTimestampQuery(const uint32_t QueryID) override;
33
34 private:
35 FPipelineStatistics PipelineStatistics;
36 std::string DebugName{};
37
38 bool bOwnedBySwapChain = false;
39
40 uint32_t TimestampQueryCount = 0;
41 uint32_t TimestampNextAvailableQuery = 2;
42
43 std::vector<std::vector<uint64_t>> TimestampQueryResults{};
44 std::vector<std::vector<float>> ExecutionGpuTimes{};
45
46 uint32_t PipelineQueryCount = 0;
47
49 };
50
51}
Definition OpenGLRenderCommandBuffer.h:9
Definition RenderCommandBuffer.h:12
#define LCLASS(Class)
Definition CoreMacros.h:226
Definition Asset.h:11
Definition Pipeline.h:21