Initial commit - restart from existing code
This commit is contained in:
68
src/Engine/Core/Graphics/Shader/CShadersManager.hpp
Normal file
68
src/Engine/Core/Graphics/Shader/CShadersManager.hpp
Normal file
@@ -0,0 +1,68 @@
|
||||
#ifndef CSHADERSMANAGER_HPP
|
||||
#define CSHADERSMANAGER_HPP
|
||||
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <map>
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include "../../Model/Graphic/Shader/CShader.hpp"
|
||||
#include "../../Context/CContext.hpp"
|
||||
|
||||
#include "../Exception/CJsonException.hpp"
|
||||
#include "../Exception/CFileException.hpp"
|
||||
#include "../Exception/CRuntimeException.hpp"
|
||||
|
||||
/*#ifdef WIN32
|
||||
#define SHADERS_FOLDER "../assets/shaders"
|
||||
#else
|
||||
#define SHADERS_FOLDER "../../assets/shaders"
|
||||
#endif*/
|
||||
|
||||
/**
|
||||
* @brief Class to manage shaders.
|
||||
*/
|
||||
class CShadersManager {
|
||||
private:
|
||||
/**
|
||||
* @brief map to store in a proper way the shaders.
|
||||
*/
|
||||
std::map<std::string, CShader*> m_shadersMap;
|
||||
|
||||
CShader** m_shaderList;
|
||||
public:
|
||||
/**
|
||||
* @brief constructor.
|
||||
*/
|
||||
CShadersManager(void);
|
||||
|
||||
CShadersManager(const CShadersManager& param) = delete;
|
||||
|
||||
/**
|
||||
* @brief destructor, destroy the shaders of the list.
|
||||
*/
|
||||
~CShadersManager(void);
|
||||
|
||||
CShadersManager& operator=(const CShadersManager& param) = delete;
|
||||
|
||||
/**
|
||||
* @brief get a shader by its name.
|
||||
* @param[in] name shader name.
|
||||
* @return the shader.
|
||||
*/
|
||||
CShader* get(std::string name) const;
|
||||
|
||||
/**
|
||||
* @brief compile and link all the shaders to make them ready to use.
|
||||
*/
|
||||
void compile(void);
|
||||
|
||||
/**
|
||||
* @brief search the folder assets/shaders and create the shaders specifieds by a json file.
|
||||
* @post throw an FileException if the shaders folder is not found.
|
||||
*/
|
||||
void create(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user