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