#include "resource_shader.h" #include "debug.h" ResourceShader::ResourceShader(const std::string& vertexShaderName, const std::string& fragmentShaderName) : NewResource(&ResourceShader::type) { Resources::StorePointer* ptr = this->acquireResource(vertexShaderName +'|'+fragmentShaderName); if (ptr) { PRINTF(5)("FOUND SHADER: %s\n", vertexShaderName.c_str()); this->acquireData(static_cast(ptr)->ptr()); } else { PRINTF(5)("NOT FOUND SHADER: %s\n", vertexShaderName.c_str()); std::string vertexFileName = this->NewResource::locateFile(vertexShaderName); std::string fragmentFileName; if (!fragmentShaderName.empty()) fragmentFileName = this->NewResource::locateFile(fragmentShaderName); this->Shader::load(vertexFileName, fragmentFileName); this->NewResource::addResource(new ResourceShader::ShaderResourcePointer(vertexShaderName+'|'+fragmentShaderName, Resources::KeepLevel(0), this->Shader::dataPointer())); } } Resources::Type ResourceShader::type("Shader"); ResourceShader::ShaderResourcePointer::ShaderResourcePointer(const std::string& loadString, const Resources::KeepLevel& keepLevel, const ShaderData::Pointer& data) : Resources::StorePointer(loadString, keepLevel) , pointer(data) {}