17 #include "ResourceManager.h" 20 #include <ShaderProgram.h> 21 #include <shader/VertexShader.h> 22 #include <shader/FragmentShader.h> 23 #include "objects/Chunk.h" 25 std::map<std::string, ShaderProgram> ResourceManager::shaders;
26 std::map<std::string, Texture> ResourceManager::textures;
27 std::map<std::string, Mesh> ResourceManager::meshes;
29 void ResourceManager::loadShader(
const std::string &vertexShader,
const std::string &fragmentShader, std::string name){
32 shaders.insert(std::pair<std::string, ShaderProgram>(name, shaderProgram));
36 return getItemFromMap(&shaders, name);
39 Texture* ResourceManager::loadAndFetchTexture(
const std::string &fileName) {
41 return getTexture(fileName);
42 }
catch (std::invalid_argument exception) {
43 loadTexture(fileName);
44 return getTexture(fileName);
48 void ResourceManager::loadTexture(
const std::string &fileName) {
50 texture.loadTexture(fileName);
51 textures.insert(std::pair<std::string, Texture>(fileName, texture));
54 Texture* ResourceManager::getTexture(std::string fileName) {
55 return getItemFromMap(&textures, fileName);
59 Mesh* ResourceManager::loadAndFetchMesh(
const std::string &fileName){
61 return getMesh(fileName);
62 }
catch (std::invalid_argument exception) {
64 return getMesh(fileName);
68 void ResourceManager::loadMesh(
const std::string &fileName){
70 mesh.loadMesh(fileName);
71 meshes.insert(std::pair<std::string, Mesh>(fileName, mesh));
74 Mesh* ResourceManager::getMesh(std::string fileName)
76 return getItemFromMap(&meshes, fileName);
79 template<
typename Type>
80 Type* ResourceManager::getItemFromMap(std::map<std::string, Type> *map, std::string
id) {
81 typename std::map<std::string, Type>::iterator it = map->find(
id);
82 if( it != map->end()) {
85 std::stringstream errorMessage;
86 errorMessage <<
id <<
" hasn't been loaded into ResourceManager before fetched";
87 throw std::invalid_argument(errorMessage.str());
Compiles Fragment Shaders.
Class for maintaining OpenGL shader programs.
void loadShader(IShader *vertexShader, IShader *fragmentShader)