LkEngine 0.1.2
 
Loading...
Searching...
No Matches
RenderContext.h
1#pragma once
2
5#include "LkEngine/Core/LObject/ObjectPtr.h"
6
7#include "BlendingSpecification.h"
8
9struct GLFWwindow;
10
11namespace LkEngine {
12
13 class LWindow;
14
18 enum class ERenderProfile
19 {
20 Core,
21 Compability,
22 };
23
27 class LRenderContext : public LObject
28 {
29 public:
30 virtual ~LRenderContext() = default;
31
32 virtual void Initialize(const ESourceBlendFunction InSourceFunc,
33 const EDestinationBlendFunction InDestinatonFunc) = 0;
34 virtual void Destroy() = 0;
35
36 virtual GLFWwindow* GetGlfwWindow() = 0;
37 virtual void SetViewport(const glm::vec2& pos, const glm::vec2& size) = 0;
38
39 virtual bool GetDepthEnabled() const = 0;
40 virtual void SetDepthEnabled(const bool InEnabled) = 0;
41 virtual void SetDepthFunction(const EDepthFunction InDepthFunc) = 0;
42
43 virtual bool GetBlendingEnabled() const = 0;
44 virtual void SetBlendingEnabled(const bool InEnabled) = 0;
45 virtual void SetBlendFunction(const ESourceBlendFunction InSourceFunc, const EDestinationBlendFunction InDestinationFunc) = 0;
46 virtual void SetSourceBlendFunction(const ESourceBlendFunction InSourceFunc) = 0;
47 virtual void SetDestinationBlendFunction(const EDestinationBlendFunction InDestinationFunc) = 0;
48
49 virtual void UpdateResolution(const uint16_t Width, const uint16_t Height) = 0;
50
51 virtual ESourceBlendFunction GetSourceBlendFunction() const = 0;
52 virtual EDestinationBlendFunction GetDestinationBlendFunction() const = 0;
53
54 static void SetProfile(const ERenderProfile InProfile);
55 static void SetVersion(const int MajorVersion, const int MinorVersion);
56
61
62 private:
64 };
65
66
67 namespace Enum
68 {
69 FORCEINLINE static constexpr const char* ToString(const ESourceBlendFunction InSourceFunction)
70 {
71 switch (InSourceFunction)
72 {
73 case ESourceBlendFunction::Zero: return "Zero";
74 case ESourceBlendFunction::One: return "One";
75 case ESourceBlendFunction::Alpha: return "Alpha";
76 case ESourceBlendFunction::Color: return "Color";
77 case ESourceBlendFunction::One_Minus_DestinationAlpha: return "One_Minus_DestinationAlpha";
78 }
79
80 LK_CORE_ASSERT(false, "Invalid source blendfunction name");
81 return "";
82 }
83
84 FORCEINLINE static constexpr const char* ToString(const EDestinationBlendFunction InDestinationFunction)
85 {
86 switch (InDestinationFunction)
87 {
88 case EDestinationBlendFunction::Zero: return "Zero";
89 case EDestinationBlendFunction::One: return "One";
90 case EDestinationBlendFunction::Alpha: return "Alpha";
91 case EDestinationBlendFunction::Color: return "Color";
92 case EDestinationBlendFunction::One_Minus_SourceAlpha: return "One_Minus_SourceAlpha";
93 }
94
95 LK_CORE_ASSERT(false, "Invalid destination blendfunction name");
96 return "";
97 }
98 }
99
100}
Core header.
LObject implementation.
Definition Object.h:46
virtual void Initialize()
Initialize object.
Definition Object.cpp:15
Definition RenderContext.h:28
virtual void Destroy()=0
Destroy object, releasing all resources.
static TObjectPtr< LRenderContext > Create(LWindow *InWindow)
Factory function for creating a LRenderContext.
Definition RenderContext.cpp:13
Definition Window.h:88
Definition ObjectPtr.h:102
#define LCLASS(Class)
Definition CoreMacros.h:226
Definition Asset.h:11