Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef GLM_GTX_compatibility
00040 #define GLM_GTX_compatibility GLM_VERSION
00041
00042
00043 #include "../glm.hpp"
00044 #include "../gtc/half_float.hpp"
00045
00046 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00047 # pragma message("GLM: GLM_GTX_compatibility extension included")
00048 #endif
00049
00050 #if(GLM_COMPILER & GLM_COMPILER_VC)
00051 #include <cfloat>
00052 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
00053 #include <cmath>
00054 #endif//GLM_COMPILER
00055
00056 namespace glm
00057 {
00060
00061 template <typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}
00062 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);}
00063 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);}
00064 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);}
00065 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);}
00066 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);}
00067 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);}
00068
00069 template <typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}
00070 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> saturate(const detail::tvec2<T>& x){return clamp(x, T(0), T(1));}
00071 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> saturate(const detail::tvec3<T>& x){return clamp(x, T(0), T(1));}
00072 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> saturate(const detail::tvec4<T>& x){return clamp(x, T(0), T(1));}
00073
00074 template <typename T> GLM_FUNC_QUALIFIER T atan2(T x, T y){return atan(x, y);}
00075 template <typename T> GLM_FUNC_QUALIFIER detail::tvec2<T> atan2(const detail::tvec2<T>& x, const detail::tvec2<T>& y){return atan(x, y);}
00076 template <typename T> GLM_FUNC_QUALIFIER detail::tvec3<T> atan2(const detail::tvec3<T>& x, const detail::tvec3<T>& y){return atan(x, y);}
00077 template <typename T> GLM_FUNC_QUALIFIER detail::tvec4<T> atan2(const detail::tvec4<T>& x, const detail::tvec4<T>& y){return atan(x, y);}
00078
00079 template <typename genType> bool isfinite(genType const & x);
00080 template <typename valType> detail::tvec2<bool> isfinite(const detail::tvec2<valType>& x);
00081 template <typename valType> detail::tvec3<bool> isfinite(const detail::tvec3<valType>& x);
00082 template <typename valType> detail::tvec4<bool> isfinite(const detail::tvec4<valType>& x);
00083
00084 template <typename genType> bool isinf(genType const & x);
00085 template <typename genType> detail::tvec2<bool> isinf(const detail::tvec2<genType>& x);
00086 template <typename genType> detail::tvec3<bool> isinf(const detail::tvec3<genType>& x);
00087 template <typename genType> detail::tvec4<bool> isinf(const detail::tvec4<genType>& x);
00088
00089 template <typename genType> bool isnan(genType const & x);
00090 template <typename genType> detail::tvec2<bool> isnan(const detail::tvec2<genType>& x);
00091 template <typename genType> detail::tvec3<bool> isnan(const detail::tvec3<genType>& x);
00092 template <typename genType> detail::tvec4<bool> isnan(const detail::tvec4<genType>& x);
00093
00094 typedef bool bool1;
00095 typedef detail::tvec2<bool> bool2;
00096 typedef detail::tvec3<bool> bool3;
00097 typedef detail::tvec4<bool> bool4;
00098
00099 typedef bool bool1x1;
00100 typedef detail::tmat2x2<bool> bool2x2;
00101 typedef detail::tmat2x3<bool> bool2x3;
00102 typedef detail::tmat2x4<bool> bool2x4;
00103 typedef detail::tmat3x2<bool> bool3x2;
00104 typedef detail::tmat3x3<bool> bool3x3;
00105 typedef detail::tmat3x4<bool> bool3x4;
00106 typedef detail::tmat4x2<bool> bool4x2;
00107 typedef detail::tmat4x3<bool> bool4x3;
00108 typedef detail::tmat4x4<bool> bool4x4;
00109
00110 typedef int int1;
00111 typedef detail::tvec2<int> int2;
00112 typedef detail::tvec3<int> int3;
00113 typedef detail::tvec4<int> int4;
00114
00115 typedef int int1x1;
00116 typedef detail::tmat2x2<int> int2x2;
00117 typedef detail::tmat2x3<int> int2x3;
00118 typedef detail::tmat2x4<int> int2x4;
00119 typedef detail::tmat3x2<int> int3x2;
00120 typedef detail::tmat3x3<int> int3x3;
00121 typedef detail::tmat3x4<int> int3x4;
00122 typedef detail::tmat4x2<int> int4x2;
00123 typedef detail::tmat4x3<int> int4x3;
00124 typedef detail::tmat4x4<int> int4x4;
00125
00126 typedef detail::half half1;
00127 typedef detail::tvec2<detail::half> half2;
00128 typedef detail::tvec3<detail::half> half3;
00129 typedef detail::tvec4<detail::half> half4;
00130
00131 typedef detail::half half1x1;
00132 typedef detail::tmat2x2<detail::half> half2x2;
00133 typedef detail::tmat2x3<detail::half> half2x3;
00134 typedef detail::tmat2x4<detail::half> half2x4;
00135 typedef detail::tmat3x2<detail::half> half3x2;
00136 typedef detail::tmat3x3<detail::half> half3x3;
00137 typedef detail::tmat3x4<detail::half> half3x4;
00138 typedef detail::tmat4x2<detail::half> half4x2;
00139 typedef detail::tmat4x3<detail::half> half4x3;
00140 typedef detail::tmat4x4<detail::half> half4x4;
00141
00142 typedef float float1;
00143 typedef detail::tvec2<float> float2;
00144 typedef detail::tvec3<float> float3;
00145 typedef detail::tvec4<float> float4;
00146
00147 typedef float float1x1;
00148 typedef detail::tmat2x2<float> float2x2;
00149 typedef detail::tmat2x3<float> float2x3;
00150 typedef detail::tmat2x4<float> float2x4;
00151 typedef detail::tmat3x2<float> float3x2;
00152 typedef detail::tmat3x3<float> float3x3;
00153 typedef detail::tmat3x4<float> float3x4;
00154 typedef detail::tmat4x2<float> float4x2;
00155 typedef detail::tmat4x3<float> float4x3;
00156 typedef detail::tmat4x4<float> float4x4;
00157
00158 typedef double double1;
00159 typedef detail::tvec2<double> double2;
00160 typedef detail::tvec3<double> double3;
00161 typedef detail::tvec4<double> double4;
00162
00163 typedef double double1x1;
00164 typedef detail::tmat2x2<double> double2x2;
00165 typedef detail::tmat2x3<double> double2x3;
00166 typedef detail::tmat2x4<double> double2x4;
00167 typedef detail::tmat3x2<double> double3x2;
00168 typedef detail::tmat3x3<double> double3x3;
00169 typedef detail::tmat3x4<double> double3x4;
00170 typedef detail::tmat4x2<double> double4x2;
00171 typedef detail::tmat4x3<double> double4x3;
00172 typedef detail::tmat4x4<double> double4x4;
00173
00175 }
00176
00177 #include "compatibility.inl"
00178
00179 #endif//GLM_GTX_compatibility
00180