- Main Page
- Related Pages
- Modules
- Files

- File List

compatibility.hpp
Go to the documentation of this file.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #ifndef GLM_GTX_compatibility
40 #define GLM_GTX_compatibility GLM_VERSION
41
42 // Dependency:
43 #include "../glm.hpp"
44 #include "../gtc/half_float.hpp"
45 #include "../gtc/quaternion.hpp"
46
47 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
48 # pragma message("GLM: GLM_GTX_compatibility extension included")
49 #endif
50
51 #if(GLM_COMPILER & GLM_COMPILER_VC)
52 # include <cfloat>
53 #elif(GLM_COMPILER & GLM_COMPILER_GCC)
54 # include <cmath>
55 # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
56 # undef isfinite
57 # endif
58 #endif//GLM_COMPILER
59
60 namespace glm
61 {
64
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);}
72
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);}
74
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));}
79
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);}
84
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);
89
90 typedef bool bool1;
91 typedef detail::tvec2<bool> bool2;
92 typedef detail::tvec3<bool> bool3;
93 typedef detail::tvec4<bool> bool4;
94
95 typedef bool bool1x1;
96 typedef detail::tmat2x2<bool> bool2x2;
97 typedef detail::tmat2x3<bool> bool2x3;
98 typedef detail::tmat2x4<bool> bool2x4;
99 typedef detail::tmat3x2<bool> bool3x2;
100 typedef detail::tmat3x3<bool> bool3x3;
101 typedef detail::tmat3x4<bool> bool3x4;
102 typedef detail::tmat4x2<bool> bool4x2;
103 typedef detail::tmat4x3<bool> bool4x3;
104 typedef detail::tmat4x4<bool> bool4x4;
105
106 typedef int int1;
107 typedef detail::tvec2<int> int2;
108 typedef detail::tvec3<int> int3;
109 typedef detail::tvec4<int> int4;
110
111 typedef int int1x1;
112 typedef detail::tmat2x2<int> int2x2;
113 typedef detail::tmat2x3<int> int2x3;
114 typedef detail::tmat2x4<int> int2x4;
115 typedef detail::tmat3x2<int> int3x2;
116 typedef detail::tmat3x3<int> int3x3;
117 typedef detail::tmat3x4<int> int3x4;
118 typedef detail::tmat4x2<int> int4x2;
119 typedef detail::tmat4x3<int> int4x3;
120 typedef detail::tmat4x4<int> int4x4;
121
122 typedef detail::half half1;
123 typedef detail::tvec2<detail::half> half2;
124 typedef detail::tvec3<detail::half> half3;
125 typedef detail::tvec4<detail::half> half4;
126
127 typedef detail::half half1x1;
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;
137
138 typedef float float1;
139 typedef detail::tvec2<float> float2;
140 typedef detail::tvec3<float> float3;
141 typedef detail::tvec4<float> float4;
142
143 typedef float float1x1;
144 typedef detail::tmat2x2<float> float2x2;
145 typedef detail::tmat2x3<float> float2x3;
146 typedef detail::tmat2x4<float> float2x4;
147 typedef detail::tmat3x2<float> float3x2;
148 typedef detail::tmat3x3<float> float3x3;
149 typedef detail::tmat3x4<float> float3x4;
150 typedef detail::tmat4x2<float> float4x2;
151 typedef detail::tmat4x3<float> float4x3;
152 typedef detail::tmat4x4<float> float4x4;
153
154 typedef double double1;
155 typedef detail::tvec2<double> double2;
156 typedef detail::tvec3<double> double3;
157 typedef detail::tvec4<double> double4;
158
159 typedef double double1x1;
160 typedef detail::tmat2x2<double> double2x2;
161 typedef detail::tmat2x3<double> double2x3;
162 typedef detail::tmat2x4<double> double2x4;
163 typedef detail::tmat3x2<double> double3x2;
164 typedef detail::tmat3x3<double> double3x3;
165 typedef detail::tmat3x4<double> double3x4;
166 typedef detail::tmat4x2<double> double4x2;
167 typedef detail::tmat4x3<double> double4x3;
168 typedef detail::tmat4x4<double> double4x4;
169
171 }//namespace glm
172
173 #include "compatibility.inl"
174
175 #endif//GLM_GTX_compatibility
176