Nameless Engine
Loading...
Searching...
No Matches
ShaderTextureResourceManager.h
1#pragma once
2
3// Standard.
4#include <memory>
5#include <mutex>
6#include <unordered_map>
7#include <unordered_set>
8
9// Custom.
10#include "shader/general/resources/ShaderResource.h"
11#include "shader/general/resources/texture/ShaderTextureResourceUniquePtr.h"
12
13namespace ne {
14 class Renderer;
15
28 // Only renderer should be allowed to create this manager.
29 friend class Renderer;
30
31 // Unique pointers will notify the manager before destruction.
33
34 public:
36
39
42
55 std::variant<ShaderTextureResourceUniquePtr, Error> createShaderTextureResource(
56 const std::string& sShaderResourceName,
57 const std::string& sResourceAdditionalInfo,
58 const std::unordered_set<Pipeline*>& pipelinesToUse,
59 std::unique_ptr<TextureHandle> pTextureToUse);
60
68 std::pair<
69 std::recursive_mutex,
70 std::unordered_map<ShaderTextureResource*, std::unique_ptr<ShaderTextureResource>>>*
72
73 private:
80
88 std::variant<ShaderTextureResourceUniquePtr, Error>
89 handleResourceCreation(std::variant<std::unique_ptr<ShaderTextureResource>, Error> result);
90
97 void destroyResource(ShaderTextureResource* pResourceToDestroy);
98
100 Renderer* pRenderer = nullptr;
101
108 std::pair<
109 std::recursive_mutex,
110 std::unordered_map<ShaderTextureResource*, std::unique_ptr<ShaderTextureResource>>>
112 };
113} // namespace ne
Definition: Error.h:27
Definition: Renderer.h:39
Definition: ShaderTextureResourceManager.h:27
Renderer * pRenderer
Definition: ShaderTextureResourceManager.h:100
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResource *, std::unique_ptr< ShaderTextureResource > > > mtxShaderTextureResources
Definition: ShaderTextureResourceManager.h:111
void destroyResource(ShaderTextureResource *pResourceToDestroy)
Definition: ShaderTextureResourceManager.cpp:59
std::variant< ShaderTextureResourceUniquePtr, Error > handleResourceCreation(std::variant< std::unique_ptr< ShaderTextureResource >, Error > result)
Definition: ShaderTextureResourceManager.cpp:39
std::variant< ShaderTextureResourceUniquePtr, Error > createShaderTextureResource(const std::string &sShaderResourceName, const std::string &sResourceAdditionalInfo, const std::unordered_set< Pipeline * > &pipelinesToUse, std::unique_ptr< TextureHandle > pTextureToUse)
Definition: ShaderTextureResourceManager.cpp:15
std::pair< std::recursive_mutex, std::unordered_map< ShaderTextureResource *, std::unique_ptr< ShaderTextureResource > > > * getResources()
Definition: ShaderTextureResourceManager.cpp:77
~ShaderTextureResourceManager()
Definition: ShaderTextureResourceManager.cpp:85
Definition: ShaderTextureResourceUniquePtr.h:17
Definition: ShaderResource.h:88