Esempio n. 1
0
GL3ShaderProgram *GL3ShaderManager::getShader(GL3ShaderType type) {
    if (_programCache[static_cast<size_t>(type)]) {
        return _programCache[static_cast<size_t>(type)].get();
    }

    _programCache[static_cast<size_t>(type)].reset(new GL3ShaderProgram(_fileLoader, getShaderDefinition(type)));

    return _programCache[static_cast<size_t>(type)].get();
}
Esempio n. 2
0
GLuint GL3ShaderManager::getProgram(ShaderType type, ShaderFlags flags) {
    auto iter = _programCache.find(std::make_pair(type, flags));
    if (iter != _programCache.end()) {
        return iter->second;
    }

    auto definition = getShaderDefinition(type);

    auto prog = compileProgram(_fileLoader, definition, getHeader(flags));
    bindLocations(prog, definition);
    _programCache.insert(std::make_pair(std::make_pair(type, flags), prog));

    return prog;
}