Example #1
0
  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;
		}
	}