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;
30class BufferImpl;
31
33class GUI;
34
35class VENOM_COMMON_API GraphicsPlugin : public Plugin
36{
37public:
38 enum class GraphicsPluginType
39 {
40 Vulkan,
41#ifdef __APPLE__
42 Metal,
43#elif defined(_WIN32)
44 DirectX12
45#endif
46 };
47
48public:
49 GraphicsPlugin();
50 ~GraphicsPlugin() override;
51
52 static GraphicsPlugin * Get();
53
54 virtual GraphicsApplication * CreateGraphicsApplication(int argc, const char* argv[]) = 0;
55
56 virtual void TerminatePluginObjects() override;
57
58 // Graphics objects
59 virtual MaterialImpl * CreateMaterial() = 0;
60 virtual ModelImpl * CreateModel() = 0;
61 virtual MeshImpl * CreateMesh() = 0;
62 virtual TextureImpl * CreateTexture() = 0;
63 virtual CameraImpl * CreateCamera() = 0;
64 virtual ShaderPipelineImpl * CreateShaderPipeline() = 0;
65 virtual RenderingPipelineImpl * CreateRenderingPipeline() = 0;
66 virtual RenderPassImpl * CreateRenderPass() = 0;
67 virtual SkyboxImpl * CreateSkybox() = 0;
68 virtual RenderTargetImpl * CreateRenderTarget() = 0;
69 virtual LightImpl * CreateLight() = 0;
70 virtual BufferImpl * CreateBuffer() = 0;
71
72 // Global instances
73 virtual ShaderResourceTable * CreateShaderResourceTable() = 0;
74 virtual GUI * CreateGUI() = 0;
75
76private:
77 friend class GraphicsCachedResource;
78 friend class GraphicsPluginObject;
79 static inline vc::UMap<vc::String, vc::SPtr<GraphicsCachedResource>> * __GetGraphicsResourceCache() { return Get()->__graphicsResourceCache.get(); }
80 vc::UPtr<vc::UMap<vc::String, vc::SPtr<GraphicsCachedResource>>> __graphicsResourceCache;
81};
82
83}
84}
Definition Buffer.h:25
Definition Camera.h:41
Definition GUI.h:33
Definition GraphicsApplication.h:28
Definition Light.h:50
Definition Material.h:22
Definition Mesh.h:24
Definition Model.h:32
Definition RenderPass.h:22
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