static inline const program_t& Create(const std::string& mat_name , const std::string& preprocessorDefinitions = std::string()) { const uint16_t version = GLSL_VERSION; const std::string comp_str = GLSL_VERSION>=150 ?" compatibility":""; const std::string mat_name_cut = GetMaterialName(mat_name); if(GetPrograms().find(mat_name_cut)==GetPrograms().end()) { program_t p; p.program = new osg::Program; p.program->setName(mat_name_cut); static osg::Shader* ssv = AddShader(shaders::VS, "shadow", version, comp_str, string()); static osg::Shader* ssf = AddShader(shaders::FS, "shadow", version, comp_str, string()); p.program->addShader( ssv ); p.program->addShader( ssf ); p.program->addShader( AddShader(shaders::VS, mat_name_cut, version, comp_str, preprocessorDefinitions)); p.program->addShader( AddShader(shaders::FS, mat_name_cut, version, comp_str, preprocessorDefinitions)); p.program->addBindAttribLocation( "tangent" , 6 ); p.program->addBindAttribLocation( "binormal", 7 ); GetPrograms()[mat_name_cut]=p; } return GetPrograms()[mat_name_cut]; }
BOOL CInstall::SetAllUsers(BOOL bUseCommon) { m_bUseCommon = bUseCommon; return GetPrograms(bUseCommon, m_szPrograms, sizeof(m_szPrograms)); }