shared_ptr<GlProgramDesc> getProgramDesc(const string& vsFilename, const string& fsFilename) { GlProgramDescMap::key_type key(vsFilename, fsFilename); GlProgramDescMap::iterator i = programMap.find(key); if (i == programMap.end()) { shared_ptr<GlProgramDesc> program(new GlProgramDesc(*getShader(vsFilename, GL_VERTEX_SHADER), *getShader(fsFilename, GL_FRAGMENT_SHADER))); programMap[key] = program; return program; } else { return i->second; } }
shared_ptr<GlProgramDesc> getProgramDesc(const string& vsFilename, const string& fsFilename) { GlProgramDescMap::key_type key(vsFilename, fsFilename); GlProgramDescMap::iterator i = programMap.find(key); if (i == programMap.end()) { // no program exists with the same vshader and fshader shared_ptr<GlProgramDesc> program( new GlProgramDesc( *getShader(vsFilename, GL_VERTEX_SHADER), *getShader(fsFilename, GL_FRAGMENT_SHADER) , vsFilename, fsFilename ) ); // getShader() compiles the shaders and GlProgramDesc() links the shaders programMap[key] = program; return program; } else { return i->second; } }