VenomEngine
Cross-Platform Modern Graphics Engine
Loading...
Searching...
No Matches
GraphicsPlugin.h
Go to the documentation of this file.
1
8#pragma once
11
12namespace venom
13{
14namespace common
15{
16
18
19class MaterialImpl;
20class ModelImpl;
21class MeshImpl;
22class TextureImpl;
23class CameraImpl;
26class SkyboxImpl;
28class LightImpl;
29class RenderPassImpl;
30
32class GUI;
33
34class VENOM_COMMON_API GraphicsPlugin : public Plugin
35{
36public:
37 enum class GraphicsPluginType
38 {
39 Vulkan,
40#ifdef __APPLE__
41 Metal,
42#elif defined(_WIN32)
43 DirectX12
44#endif
45 };
46
47public:
48 GraphicsPlugin();
49 ~GraphicsPlugin() override;
50
51 static GraphicsPlugin * Get();
52
53 virtual GraphicsApplication * CreateGraphicsApplication(int argc, const char* argv[]) = 0;
54
55 // Graphics objects
56 virtual MaterialImpl * CreateMaterial() = 0;
57 virtual ModelImpl * CreateModel() = 0;
58 virtual MeshImpl * CreateMesh() = 0;
59 virtual TextureImpl * CreateTexture() = 0;
60 virtual CameraImpl * CreateCamera() = 0;
61 virtual ShaderPipelineImpl * CreateShaderPipeline() = 0;
62 virtual RenderingPipelineImpl * CreateRenderingPipeline() = 0;
63 virtual RenderPassImpl * CreateRenderPass() = 0;
64 virtual SkyboxImpl * CreateSkybox() = 0;
65 virtual RenderTargetImpl * CreateRenderTarget() = 0;
66 virtual LightImpl * CreateLight() = 0;
67
68 // Global instances
69 virtual ShaderResourceTable * CreateShaderResourceTable() = 0;
70 virtual GUI * CreateGUI() = 0;
71
72private:
73 friend class GraphicsCachedResource;
74 friend class GraphicsPluginObject;
75 static inline vc::UMap<vc::String, vc::SPtr<GraphicsCachedResource>> * __GetGraphicsResourceCache() { return Get()->__graphicsResourceCache.get(); }
76 vc::UPtr<vc::UMap<vc::String, vc::SPtr<GraphicsCachedResource>>> __graphicsResourceCache;
77};
78
79}
80}
Definition Camera.h:41
Definition GUI.h:33
Definition GraphicsApplication.h:28
Definition Light.h:48
Definition Material.h:22
Definition Mesh.h:24
Definition Model.h:32
Definition RenderPass.h:21
Definition RenderTarget.h:20
Definition RenderingPipeline.h:20
Definition ShaderPipeline.h:45
Definition ShaderResourceTable.h:31
Definition Skybox.h:36
Definition Texture.h:70
High-Level Frontend of the VenomEngine project. It also contains all the code shared between every AP...
Definition Callback.h:15
Contains the entirety of the code of the VenomEngine project.
Definition Callback.h:13