Manage shaders.
More...
#include <shader_manager.hpp>
|
using | DataType |
using | DataBlockType |
using | DataBlockPointer |
using | Map |
|
bool | initialize () override |
| Initialize the shader manager.
|
bool | loadFromMemory (std::string_view name, void const *data, int size, fge::vulkan::Shader::Type type, ShaderInputTypes input, bool debugBuild=false) |
| Load a shader from the memory.
|
bool | loadFromFile (std::string_view name, std::filesystem::path path, fge::vulkan::Shader::Type type, ShaderInputTypes input, bool debugBuild=false) |
| Load a shader from a file.
|
virtual bool | isInitialized () |
virtual void | uninitialize () |
std::size_t | size () const |
| Get the number of elements in the manager.
|
AccessLock< std::mutex > | acquireLock () const |
| Acquire a AccessLock, with the manager mutex.
|
Map::const_iterator | begin (AccessLock< std::mutex > const &lock) const |
| Get the "begin" iterator of the manager.
|
Map::const_iterator | end (AccessLock< std::mutex > const &lock) const |
| Get the "end" iterator of the manager.
|
DataBlockPointer const & | getBadElement () const |
| Get the "bad" element.
|
DataBlockPointer | getElement (std::string_view name) const |
| Get the resource with the given name.
|
bool | contains (std::string_view name) const |
bool | unload (std::string_view name) |
void | unloadAll () |
bool | duplicate (std::string_view name, std::string_view newName) |
bool | push (std::string_view name, DataBlockPointer block) |
| Add a user handled resource.
|
|
DataBlockPointer | _g_badElement |
Manage shaders.
- See also
- TextureManager
◆ acquireLock()
Acquire a AccessLock, with the manager mutex.
In order to use iterators, you have to acquire a unique lock from this function. The lock is not differed and will lock the mutex.
- Returns
- A AccessLock bound to this mutex
◆ begin()
Get the "begin" iterator of the manager.
You have to provide a valid reference to a AccessLock acquired with the function AcquireLock(). This function will throw if one of this is not respected :
- The mutex pointer of the lock does not correspond to this mutex.
- Parameters
-
- Returns
- The "begin" iterator of the texture manager
◆ end()
Get the "end" iterator of the manager.
- See also
- begin()
- Parameters
-
- Returns
- The "end" iterator of the manager
◆ getBadElement()
Get the "bad" element.
A bad element is a "valid" default resource that is returned when the requested resource is not found. return The "bad" element
◆ getElement()
Get the resource with the given name.
- Parameters
-
name | The name of the resource to get |
- Returns
- The resource with the given name or the bad resource if not found
◆ initialize()
bool fge::shader::ShaderManager::initialize |
( |
| ) |
|
|
overridevirtual |
Initialize the shader manager.
A bad shader is created with this function, it is used when a shader is not found. You also have to provide a default vertex and fragments shaders.
3 default shaders are created : FGE_SHADER_DEFAULT_VERTEX : The default vertex shader (in shaderResources.hpp gDefaultVertexShader) FGE_SHADER_DEFAULT_NOTEXTURE_FRAGMENT : The default fragment shader with no texture attached (in shaderResources.hpp gDefaultFragmentShader) FGE_SHADER_DEFAULT_FRAGMENT : The default fragment shader (in shaderResources.hpp gDefaultFragmentTextureShader)
- Returns
- true if the shader manager is correctly initialized, false otherwise
Implements fge::manager::BaseManager< vulkan::Shader, DataBlock >.
◆ loadFromFile()
bool fge::shader::ShaderManager::loadFromFile |
( |
std::string_view | name, |
|
|
std::filesystem::path | path, |
|
|
fge::vulkan::Shader::Type | type, |
|
|
ShaderInputTypes | input, |
|
|
bool | debugBuild = false ) |
Load a shader from a file.
- Parameters
-
name | The name of the shader to load |
path | The path of the file to load |
type | The shader type |
input | The input file type |
debugBuild | If the input must be compiled into SPIR-V, then it will be compiled with debug symbols |
- Returns
- true if the shader was loaded, false otherwise
◆ loadFromMemory()
bool fge::shader::ShaderManager::loadFromMemory |
( |
std::string_view | name, |
|
|
void const * | data, |
|
|
int | size, |
|
|
fge::vulkan::Shader::Type | type, |
|
|
ShaderInputTypes | input, |
|
|
bool | debugBuild = false ) |
Load a shader from the memory.
- Warning
- if you pass a SPIR-V binary data, the size must be a multiple of 4.
- Parameters
-
name | The name of the shader to load |
data | The data address to load |
size | The data size to load |
type | The shader type |
input | The input file type |
debugBuild | If the input must be compiled into SPIR-V, then it will be compiled with debug symbols |
- Returns
- true if the shader was loaded, false otherwise
◆ push()
Add a user handled resource.
- Parameters
-
name | The name of the texture to add |
block | The block data to add |
- Returns
- true if the resource was added, false otherwise
◆ size()
Get the number of elements in the manager.
return The number of elements in the manager without the "bad" element
The documentation for this class was generated from the following file: