Cogs.Core
RenderResources.h
1#pragma once
2
3#include "IRenderer.h"
4
5#include "Resources/Resources.h"
6
7namespace Cogs
8{
9 namespace Core
10 {
19 {
20 public:
21 RenderResources(class Context * context);
23
24 void initialize(Context * context, class Renderer * renderer);
25 void cleanup(Context * context);
26
27 COGSCORE_DLL_API struct RenderTarget * createRenderTarget();
28 COGSCORE_DLL_API struct RenderTexture * createRenderTexture();
29 struct RenderList * createRenderList();
30 struct RenderBuffer * createRenderBuffer();
31 struct RenderMesh * createRenderMesh();
32 void destroyRenderMesh(struct RenderMesh * renderMesh);
33 uint32_t getRenderHandle(struct RenderMesh * renderMesh);
34 struct RenderMesh * getRenderMesh(uint32_t handle);
35
36 void updateResource(struct RenderResource * resource);
37 void releaseResource(struct RenderResource * resource);
38 COGSCORE_DLL_API void destroyResource(struct RenderResource * resource);
39
40 COGSCORE_DLL_API struct RenderEffect * getRenderEffect(const EffectHandle & effect);
41 COGSCORE_DLL_API struct RenderMaterial * getRenderMaterial(const Material * material);
42 COGSCORE_DLL_API struct RenderMaterial * getRenderMaterial(const MaterialHandle & material);
43 COGSCORE_DLL_API struct RenderMaterialInstance * getRenderMaterialInstance(const MaterialInstance * materialInstance);
44 COGSCORE_DLL_API struct RenderMaterialInstance * getRenderMaterialInstance(const MaterialInstanceHandle & materialInstance);
45 COGSCORE_DLL_API struct RenderTexture * getRenderTexture(const TextureHandle & texture);
46 COGSCORE_DLL_API struct RenderMesh * getRenderMesh(const MeshHandle & mesh);
47
48 ActivationResult updateResource(const MeshHandle & meshHandle) override;
49 ActivationResult updateResource(const TextureHandle & textureHandle) override;
50 ActivationResult updateResource(const EffectHandle & effectHandle) override;
51 ActivationResult updateResource(const MaterialHandle & materialHandle) override;
52 ActivationResult updateResource(const MaterialInstanceHandle & materialInstanceHandle) override;
53
54 void releaseResource(Texture * texture) override;
55 void releaseResource(Mesh * mesh) override;
56 void releaseResource(Material * material) override;
57 void releaseResource(MaterialInstance * materialInstance) override;
58 void releaseResource(Effect * effect) override;
59
60 std::string getReport() const override;
61
62 Context * getContext() { return context; }
63
64 Renderer* getRenderer() { return renderer; }
65
66 private:
67 class Renderer * renderer = nullptr;
68 IGraphicsDevice * device = nullptr;
69 Context * context = nullptr;
70 struct RenderStates * renderStates = nullptr;
71
72 std::unique_ptr<struct RenderResourceStorage> storage;
73 };
74 }
75}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Interface to the render resources.
Definition: IRenderer.h:64
Contains render resources used by the renderer.
Core renderer system.
Definition: Renderer.h:28
Represents a graphics device used to manage graphics resources and issue drawing commands.
ActivationResult
Defines results for resource activation.
Definition: ResourceBase.h:14
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
Effect resources contain data to control the shader stages of the GPU pipeline.
Definition: Effect.h:24
Material instances represent a specialized Material combined with state for all its buffers and prope...
Material resources define the how of geometry rendering (the what is defined by Mesh and Texture reso...
Definition: Material.h:82
Meshes contain streams of vertex data in addition to index data and options defining geometry used fo...
Definition: Mesh.h:265
Texture resources contain raster bitmap data to use for texturing.
Definition: Texture.h:91