// bind phong shader specific content for drawing void CPhongShader::BindShaderWithObjectForDrawing( CObject* t_object ) { assert( t_object && _light ); CPerspCamShader::BindShaderWithObjectForDrawing( t_object ); glUniform3fv( _uni_lightPos, 1, glm::value_ptr( _light->GetPos() ) ); glUniform3fv( _uni_lightLs, 1, glm::value_ptr( _light->GetLs() ) ); glUniform3fv( _uni_lightLd, 1, glm::value_ptr( _light->GetLd() ) ); glUniform3fv( _uni_lightLa, 1, glm::value_ptr( _light->GetLa() ) ); CMaterial* mtl = &(t_object->GetMaterial()); glUniform3fv( _uni_mtlKd, 1, glm::value_ptr( mtl->GetKd()._Color ) ); if( mtl->GetHasSpecular() ) { glUniform3fv( _uni_mtlKs, 1, glm::value_ptr( mtl->GetKs()._Color ) ); glUniform1f( _uni_mtlSplExp, mtl->GetSplExp() ); } else{ // set ks to all zeros glUniform3f( _uni_mtlKs, 0.f, 0.f, 0.f ); } glUniform3fv( _uni_mtlKa, 1, glm::value_ptr( mtl->GetKa()._Color ) ); }