LibCarna Version 3.4.0
Loading...
Searching...
No Matches
ShaderManager.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2010 - 2016 Leonid Kostrykin
3 *
4 * Chair of Medical Engineering (mediTEC)
5 * RWTH Aachen University
6 * Pauwelsstr. 20
7 * 52074 Aachen
8 * Germany
9 *
10 *
11 * Copyright (C) 2021 - 2025 Leonid Kostrykin
12 *
13 */
14
15#ifndef SHADERMANAGER_H_6014714286
16#define SHADERMANAGER_H_6014714286
17
23#include <LibCarna/LibCarna.hpp>
26#include <string>
27
28namespace LibCarna
29{
30
31namespace base
32{
33
34
35
36// ----------------------------------------------------------------------------------
37// ShaderManager
38// ----------------------------------------------------------------------------------
39
46class LIBCARNA ShaderManager : public Singleton< ShaderManager >
47{
48
50
51 struct Details;
52 const std::unique_ptr< Details > pimpl;
53
54protected:
55
56 friend class Singleton< ShaderManager >;
57
62
63public:
64
72 virtual ~ShaderManager();
73
83 const ShaderProgram& acquireShader( const std::string& shaderName );
84
90 void releaseShader( const ShaderProgram& shader );
91
98 void setSource( const std::string& srcName, const std::string& src );
99
103 void removeSource( const std::string& srcName );
104
105}; // ShaderManager
106
107
108
109} // namespace LibCarna :: base
110
111} // namespace LibCarna
112
113#endif // SHADERMANAGER_H_6014714286
Contains forward-declarations.
Defines LibCarna::base::Singleton.
Represents an association.
Ensures that each shader is built just once and not each time someone requests it.
void releaseShader(const ShaderProgram &shader)
Releases previously acquired shader.
void setSource(const std::string &srcName, const std::string &src)
Sets shader sources named srcName to src.
void removeSource(const std::string &srcName)
Removes any previously set shader sources named srcName.
virtual ~ShaderManager()
Deletes.
const ShaderProgram & acquireShader(const std::string &shaderName)
References shader named shaderName.
Maintains an OpenGL shader program. Realizes the RAII-idiom.
Singleton base class
Definition Singleton.hpp:63
Defines LibCarna::base::noncopyable and NON_COPYABLE.
#define NON_COPYABLE
Marks the class that it is placed in as non-copyable.