39 #ifndef GLM_GTX_compatibility 
   40 #define GLM_GTX_compatibility GLM_VERSION 
   44 #include "../gtc/half_float.hpp" 
   45 #include "../gtc/quaternion.hpp" 
   47 #if(defined(GLM_MESSAGES) && !defined(glm_ext)) 
   48 #       pragma message("GLM: GLM_GTX_compatibility extension included") 
   51 #if(GLM_COMPILER & GLM_COMPILER_VC) 
   53 #elif(GLM_COMPILER & GLM_COMPILER_GCC) 
   55 #       if(GLM_PLATFORM & GLM_PLATFORM_ANDROID) 
   65         template <
typename T> GLM_FUNC_QUALIFIER T 
lerp(T x, T y, T a){
return mix(x, y, a);}                                                                                                                                                                    
 
   66         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> 
lerp(
const detail::tvec2<T>& x, 
const detail::tvec2<T>& y, T a){
return mix(x, y, a);}                                                 
 
   67         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> 
lerp(
const detail::tvec3<T>& x, 
const detail::tvec3<T>& y, T a){
return mix(x, y, a);}                                                 
 
   68         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> 
lerp(
const detail::tvec4<T>& x, 
const detail::tvec4<T>& y, T a){
return mix(x, y, a);}                                                 
 
   69         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> 
lerp(
const detail::tvec2<T>& x, 
const detail::tvec2<T>& y, 
const detail::tvec2<T>& a){
return mix(x, y, a);}   
 
   70         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> 
lerp(
const detail::tvec3<T>& x, 
const detail::tvec3<T>& y, 
const detail::tvec3<T>& a){
return mix(x, y, a);}   
 
   71         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> 
lerp(
const detail::tvec4<T>& x, 
const detail::tvec4<T>& y, 
const detail::tvec4<T>& a){
return mix(x, y, a);}   
 
   73         template <
typename T> GLM_FUNC_QUALIFIER T 
slerp(detail::tquat<T> 
const & x, detail::tquat<T> 
const & y, T 
const & a){
return mix(x, y, a);} 
 
   75         template <
typename T> GLM_FUNC_QUALIFIER T 
saturate(T x){
return clamp(x, T(0), T(1));}                                                                                                          
 
   76         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> 
saturate(
const detail::tvec2<T>& x){
return clamp(x, T(0), T(1));}                                     
 
   77         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> 
saturate(
const detail::tvec3<T>& x){
return clamp(x, T(0), T(1));}                                     
 
   78         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> 
saturate(
const detail::tvec4<T>& x){
return clamp(x, T(0), T(1));}                                     
 
   80         template <
typename T> GLM_FUNC_QUALIFIER T 
atan2(T x, T y){
return atan(x, y);}                                                                                                                          
 
   81         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> 
atan2(
const detail::tvec2<T>& x, 
const detail::tvec2<T>& y){
return atan(x, y);}       
 
   82         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> 
atan2(
const detail::tvec3<T>& x, 
const detail::tvec3<T>& y){
return atan(x, y);}       
 
   83         template <
typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> 
atan2(
const detail::tvec4<T>& x, 
const detail::tvec4<T>& y){
return atan(x, y);}       
 
   85         template <
typename genType> 
bool isfinite(genType 
const & x);                                                                                   
 
   86         template <
typename valType> detail::tvec2<bool> 
isfinite(
const detail::tvec2<valType>& x);                              
 
   87         template <
typename valType> detail::tvec3<bool> 
isfinite(
const detail::tvec3<valType>& x);                              
 
   88         template <
typename valType> detail::tvec4<bool> 
isfinite(
const detail::tvec4<valType>& x);                              
 
   91         typedef detail::tvec2<bool>                     
bool2;                  
 
   92         typedef detail::tvec3<bool>                     
bool3;                  
 
   93         typedef detail::tvec4<bool>                     
bool4;                  
 
  107         typedef detail::tvec2<int>                      
int2;                   
 
  108         typedef detail::tvec3<int>                      
int3;                   
 
  109         typedef detail::tvec4<int>                      
int4;                   
 
  123         typedef detail::tvec2<detail::half>     
half2;                  
 
  124         typedef detail::tvec3<detail::half>     
half3;                  
 
  125         typedef detail::tvec4<detail::half>     
half4;                  
 
  128         typedef detail::tmat2x2<detail::half>   
half2x2;                
 
  129         typedef detail::tmat2x3<detail::half>   
half2x3;                
 
  130         typedef detail::tmat2x4<detail::half>   
half2x4;                
 
  131         typedef detail::tmat3x2<detail::half>   
half3x2;                
 
  132         typedef detail::tmat3x3<detail::half>   
half3x3;                
 
  133         typedef detail::tmat3x4<detail::half>   
half3x4;                
 
  134         typedef detail::tmat4x2<detail::half>   
half4x2;                
 
  135         typedef detail::tmat4x3<detail::half>   
half4x3;                
 
  136         typedef detail::tmat4x4<detail::half>   
half4x4;                
 
  173 #include "compatibility.inl" 
  175 #endif//GLM_GTX_compatibility