mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-12-30 16:32:02 +00:00
Compare commits
22 Commits
benchmark2
...
example
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50ab386db5 | ||
|
|
f5c8f23d62 | ||
|
|
d67607d3d1 | ||
|
|
fabad91c39 | ||
|
|
8332a2d907 | ||
|
|
449091185e | ||
|
|
33f24a8289 | ||
|
|
d24e33c03a | ||
|
|
0a79c70dff | ||
|
|
eedda7ca4c | ||
|
|
850efa3606 | ||
|
|
9097224f37 | ||
|
|
b13e3a317c | ||
|
|
88d583e6ac | ||
|
|
3a382212f9 | ||
|
|
ba02e1a9c4 | ||
|
|
ba5982b2a9 | ||
|
|
373e9517b4 | ||
|
|
2d71b1b11b | ||
|
|
fdea881102 | ||
|
|
f8b3a84cec | ||
|
|
77914405c3 |
8
.gitignore
vendored
8
.gitignore
vendored
@@ -5,7 +5,6 @@
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
*.vs
|
||||
|
||||
# Precompiled Headers
|
||||
@@ -31,7 +30,6 @@
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
hmm_test
|
||||
hmm_test*
|
||||
benchmark_c
|
||||
benchmark_cpp
|
||||
|
||||
test/build
|
||||
example/build
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -0,0 +1,3 @@
|
||||
[submodule "example/external/glfw"]
|
||||
path = example/external/glfw
|
||||
url = git@github.com:glfw/glfw.git
|
||||
|
||||
@@ -6,7 +6,7 @@ install:
|
||||
- cd test
|
||||
- make
|
||||
script:
|
||||
- ./hmm_test_c
|
||||
- ./hmm_test_c_no_sse
|
||||
- ./hmm_test_cpp
|
||||
- ./hmm_test_cpp_no_sse
|
||||
- build/hmm_test_c
|
||||
- build/hmm_test_c_no_sse
|
||||
- build/hmm_test_cpp
|
||||
- build/hmm_test_cpp_no_sse
|
||||
|
||||
108
HandmadeMath.h
108
HandmadeMath.h
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
HandmadeMath.h v1.5.0
|
||||
HandmadeMath.h v1.6.0
|
||||
|
||||
This is a single header file with a bunch of useful functions for game and
|
||||
graphics math operations.
|
||||
@@ -166,8 +166,14 @@
|
||||
(*) Changed internal structure for better performance and inlining.
|
||||
(*) As a result, HANDMADE_MATH_NO_INLINE has been removed and no
|
||||
longer has any effect.
|
||||
|
||||
|
||||
1.5.1
|
||||
(*) Fixed a bug with uninitialized elements in HMM_LookAt.
|
||||
1.6.0
|
||||
(*) Added array subscript operators for vector and matrix types in
|
||||
C++. This is provided as a convenience, but be aware that it may
|
||||
incur an extra function call in unoptimized builds.
|
||||
|
||||
|
||||
LICENSE
|
||||
|
||||
This software is in the public domain. Where that dedication is not
|
||||
@@ -312,6 +318,13 @@ typedef union hmm_vec2
|
||||
};
|
||||
|
||||
float Elements[2];
|
||||
|
||||
#ifdef __cplusplus
|
||||
inline float &operator[](int Index)
|
||||
{
|
||||
return Elements[Index];
|
||||
}
|
||||
#endif
|
||||
} hmm_vec2;
|
||||
|
||||
typedef union hmm_vec3
|
||||
@@ -356,6 +369,13 @@ typedef union hmm_vec3
|
||||
};
|
||||
|
||||
float Elements[3];
|
||||
|
||||
#ifdef __cplusplus
|
||||
inline float &operator[](int Index)
|
||||
{
|
||||
return Elements[Index];
|
||||
}
|
||||
#endif
|
||||
} hmm_vec3;
|
||||
|
||||
typedef union hmm_vec4
|
||||
@@ -413,6 +433,13 @@ typedef union hmm_vec4
|
||||
#ifdef HANDMADE_MATH__USE_SSE
|
||||
__m128 InternalElementsSSE;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
inline float &operator[](int Index)
|
||||
{
|
||||
return Elements[Index];
|
||||
}
|
||||
#endif
|
||||
} hmm_vec4;
|
||||
|
||||
typedef union hmm_mat4
|
||||
@@ -422,6 +449,21 @@ typedef union hmm_mat4
|
||||
#ifdef HANDMADE_MATH__USE_SSE
|
||||
__m128 Rows[4];
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
inline hmm_vec4 operator[](const int Index)
|
||||
{
|
||||
float* col = Elements[Index];
|
||||
|
||||
hmm_vec4 result;
|
||||
result.Elements[0] = col[0];
|
||||
result.Elements[1] = col[1];
|
||||
result.Elements[2] = col[2];
|
||||
result.Elements[3] = col[3];
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
} hmm_mat4;
|
||||
|
||||
typedef union hmm_quaternion
|
||||
@@ -1203,6 +1245,8 @@ HMM_INLINE hmm_mat4 HMM_DivideMat4f(hmm_mat4 Matrix, float Scalar)
|
||||
HMM_EXTERN hmm_mat4 HMM_DivideMat4f(hmm_mat4 Matrix, float Scalar);
|
||||
#endif
|
||||
|
||||
HMM_EXTERN hmm_quaternion HMM_Mat4ToQuaternion(hmm_mat4 Matrix);
|
||||
|
||||
|
||||
/*
|
||||
* Common graphics transformations
|
||||
@@ -1392,6 +1436,12 @@ HMM_EXTERN hmm_quaternion HMM_Slerp(hmm_quaternion Left, float Time, hmm_quatern
|
||||
HMM_EXTERN hmm_mat4 HMM_QuaternionToMat4(hmm_quaternion Left);
|
||||
HMM_EXTERN hmm_quaternion HMM_QuaternionFromAxisAngle(hmm_vec3 Axis, float AngleOfRotation);
|
||||
|
||||
HMM_INLINE hmm_quaternion HMM_QuaternionFromVectors(hmm_vec3 Normal, hmm_vec3 Up)
|
||||
{
|
||||
// TODO: zero cases
|
||||
return HMM_QuaternionFromAxisAngle(HMM_Cross(Up, Normal), HMM_ACosF(HMM_DotVec3(Normal, Up)));
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
@@ -2043,6 +2093,11 @@ HMM_INLINE hmm_mat4 &operator*=(hmm_mat4 &Left, float Right)
|
||||
return (Left = Left * Right);
|
||||
}
|
||||
|
||||
HMM_INLINE hmm_quaternion &operator*=(hmm_quaternion &Left, hmm_quaternion Right)
|
||||
{
|
||||
return (Left = Left * Right);
|
||||
}
|
||||
|
||||
HMM_INLINE hmm_quaternion &operator*=(hmm_quaternion &Left, float Right)
|
||||
{
|
||||
return (Left = Left * Right);
|
||||
@@ -2259,7 +2314,10 @@ hmm_mat4 HMM_MultiplyMat4f(hmm_mat4 Matrix, float Scalar)
|
||||
hmm_vec4 HMM_MultiplyMat4ByVec4(hmm_mat4 Matrix, hmm_vec4 Vector)
|
||||
{
|
||||
hmm_vec4 Result;
|
||||
|
||||
|
||||
#ifdef HANDMADE_MATH__USE_SSE
|
||||
Result.InternalElementsSSE = HMM_LinearCombineSSE(Vector.InternalElementsSSE, Matrix);
|
||||
#else
|
||||
int Columns, Rows;
|
||||
for(Rows = 0; Rows < 4; ++Rows)
|
||||
{
|
||||
@@ -2271,7 +2329,8 @@ hmm_vec4 HMM_MultiplyMat4ByVec4(hmm_mat4 Matrix, hmm_vec4 Vector)
|
||||
|
||||
Result.Elements[Rows] = Sum;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return (Result);
|
||||
}
|
||||
|
||||
@@ -2294,6 +2353,42 @@ hmm_mat4 HMM_DivideMat4f(hmm_mat4 Matrix, float Scalar)
|
||||
}
|
||||
#endif
|
||||
|
||||
hmm_quaternion HMM_Mat4ToQuaternion(hmm_mat4 m)
|
||||
{
|
||||
hmm_quaternion q;
|
||||
|
||||
float trace = m.Elements[0][0] + m.Elements[1][1] + m.Elements[2][2];
|
||||
if (trace > 0) {
|
||||
float s = 0.5f / HMM_SquareRootF(trace + 1.0f);
|
||||
q.X = (m.Elements[1][2] - m.Elements[2][1] ) * s;
|
||||
q.Y = (m.Elements[2][0] - m.Elements[0][2] ) * s;
|
||||
q.Z = (m.Elements[0][1] - m.Elements[1][0] ) * s;
|
||||
q.W = 0.25f / s;
|
||||
} else {
|
||||
if (m.Elements[0][0] > m.Elements[1][1] && m.Elements[0][0] > m.Elements[2][2]) {
|
||||
float s = 2.0f * HMM_SquareRootF(1.0f + m.Elements[0][0] - m.Elements[1][1] - m.Elements[2][2]);
|
||||
q.X = 0.25f * s;
|
||||
q.Y = (m.Elements[1][0] + m.Elements[0][1]) / s;
|
||||
q.Z = (m.Elements[2][0] + m.Elements[0][2]) / s;
|
||||
q.W = (m.Elements[1][2] - m.Elements[2][1]) / s;
|
||||
} else if (m.Elements[1][1] > m.Elements[2][2]) {
|
||||
float s = 2.0f * HMM_SquareRootF(1.0f + m.Elements[1][1] - m.Elements[0][0] - m.Elements[2][2]);
|
||||
q.X = (m.Elements[1][0] + m.Elements[0][1]) / s;
|
||||
q.Y = 0.25f * s;
|
||||
q.Z = (m.Elements[2][1] + m.Elements[1][2]) / s;
|
||||
q.W = (m.Elements[2][0] - m.Elements[0][2]) / s;
|
||||
} else {
|
||||
float s = 2.0f * HMM_SquareRootF(1.0f + m.Elements[2][2] - m.Elements[0][0] - m.Elements[1][1]);
|
||||
q.X = (m.Elements[2][0] + m.Elements[0][2]) / s;
|
||||
q.Y = (m.Elements[2][1] + m.Elements[1][2]) / s;
|
||||
q.Z = 0.25f * s;
|
||||
q.W = (m.Elements[0][1] - m.Elements[1][0]) / s;
|
||||
}
|
||||
}
|
||||
|
||||
return q;
|
||||
}
|
||||
|
||||
hmm_mat4 HMM_Rotate(float Angle, hmm_vec3 Axis)
|
||||
{
|
||||
hmm_mat4 Result = HMM_Mat4d(1.0f);
|
||||
@@ -2330,14 +2425,17 @@ hmm_mat4 HMM_LookAt(hmm_vec3 Eye, hmm_vec3 Center, hmm_vec3 Up)
|
||||
Result.Elements[0][0] = S.X;
|
||||
Result.Elements[0][1] = U.X;
|
||||
Result.Elements[0][2] = -F.X;
|
||||
Result.Elements[0][3] = 0.0f;
|
||||
|
||||
Result.Elements[1][0] = S.Y;
|
||||
Result.Elements[1][1] = U.Y;
|
||||
Result.Elements[1][2] = -F.Y;
|
||||
Result.Elements[1][3] = 0.0f;
|
||||
|
||||
Result.Elements[2][0] = S.Z;
|
||||
Result.Elements[2][1] = U.Z;
|
||||
Result.Elements[2][2] = -F.Z;
|
||||
Result.Elements[2][3] = 0.0f;
|
||||
|
||||
Result.Elements[3][0] = -HMM_DotVec3(S, Eye);
|
||||
Result.Elements[3][1] = -HMM_DotVec3(U, Eye);
|
||||
|
||||
@@ -8,8 +8,10 @@ To get started, go download [the latest release](https://github.com/HandmadeMath
|
||||
|
||||
-----
|
||||
|
||||
Version | Changes |
|
||||
Version | Changes |
|
||||
----------------|----------------|
|
||||
**1.6.0** | Added array subscript operators for vector and matrix types in C++. This is provided as a convenience, but be aware that it may incur an extra function call in unoptimized builds.
|
||||
**1.5.1** | Fixed a bug with uninitialized elements in HMM_LookAt.
|
||||
**1.5.0** | Changed internal structure for better performance and inlining. As a result, `HANDMADE_MATH_NO_INLINE` has been removed and no longer has any effect.
|
||||
**1.4.0** | Fixed bug when using C mode. SSE'd all vec4 operations. Removed zeroing for better performance.
|
||||
**1.3.0** | Removed need to `#define HANDMADE_MATH_CPP_MODE`. C++ definitions are now included automatically in C++ environments.
|
||||
|
||||
BIN
example/Axes.blend
Normal file
BIN
example/Axes.blend
Normal file
Binary file not shown.
10
example/Axes.mtl
Normal file
10
example/Axes.mtl
Normal file
@@ -0,0 +1,10 @@
|
||||
# Blender MTL File: 'Axes.blend'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl None
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
481
example/Axes.obj
Normal file
481
example/Axes.obj
Normal file
@@ -0,0 +1,481 @@
|
||||
# Blender v2.78 (sub 0) OBJ File: 'Axes.blend'
|
||||
# www.blender.org
|
||||
mtllib Axes.mtl
|
||||
o Cylinder.002_Cylinder
|
||||
v 0.000000 0.080000 -0.000000
|
||||
v 0.000000 0.080000 2.000000
|
||||
v 0.056569 0.056569 -0.000000
|
||||
v 0.056569 0.056569 2.000000
|
||||
v 0.080000 -0.000000 0.000000
|
||||
v 0.080000 0.000000 2.000000
|
||||
v 0.056569 -0.056569 0.000000
|
||||
v 0.056569 -0.056568 2.000000
|
||||
v -0.000000 -0.080000 0.000000
|
||||
v -0.000000 -0.080000 2.000000
|
||||
v -0.056569 -0.056569 0.000000
|
||||
v -0.056569 -0.056568 2.000000
|
||||
v -0.080000 0.000000 -0.000000
|
||||
v -0.080000 0.000000 2.000000
|
||||
v -0.056569 0.056569 -0.000000
|
||||
v -0.056569 0.056569 2.000000
|
||||
v 0.000000 0.233061 1.965651
|
||||
v 0.089189 0.215320 1.965651
|
||||
v 0.164799 0.164799 1.965651
|
||||
v 0.215320 0.089189 1.965651
|
||||
v 0.233061 0.000000 1.965651
|
||||
v 0.000000 0.000000 2.431772
|
||||
v 0.215320 -0.089188 1.965651
|
||||
v 0.164799 -0.164799 1.965651
|
||||
v 0.089189 -0.215320 1.965651
|
||||
v 0.000000 -0.233061 1.965651
|
||||
v -0.089188 -0.215320 1.965651
|
||||
v -0.164799 -0.164799 1.965651
|
||||
v -0.215320 -0.089188 1.965651
|
||||
v -0.233060 0.000000 1.965651
|
||||
v -0.215320 0.089189 1.965651
|
||||
v -0.164799 0.164799 1.965651
|
||||
v -0.089188 0.215320 1.965651
|
||||
vn 0.3827 0.9239 -0.0000
|
||||
vn 0.9239 0.3827 -0.0000
|
||||
vn 0.9239 -0.3827 0.0000
|
||||
vn 0.3827 -0.9239 0.0000
|
||||
vn -0.3827 -0.9239 0.0000
|
||||
vn -0.9239 -0.3827 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -0.9239 0.3827 -0.0000
|
||||
vn -0.3827 0.9239 -0.0000
|
||||
vn 0.0000 -0.0000 -1.0000
|
||||
vn 0.1752 0.8806 0.4403
|
||||
vn 0.4988 0.7465 0.4403
|
||||
vn 0.7465 0.4988 0.4403
|
||||
vn 0.8806 0.1752 0.4403
|
||||
vn 0.8806 -0.1752 0.4403
|
||||
vn 0.7465 -0.4988 0.4403
|
||||
vn 0.4988 -0.7465 0.4403
|
||||
vn 0.1752 -0.8806 0.4403
|
||||
vn -0.1752 -0.8806 0.4403
|
||||
vn -0.4988 -0.7465 0.4403
|
||||
vn -0.7465 -0.4988 0.4403
|
||||
vn -0.8806 -0.1752 0.4403
|
||||
vn -0.8806 0.1752 0.4403
|
||||
vn -0.7465 0.4988 0.4403
|
||||
vn -0.4988 0.7465 0.4403
|
||||
vn -0.1752 0.8806 0.4403
|
||||
usemtl None
|
||||
s off
|
||||
f 1//1 2//1 4//1 3//1
|
||||
f 3//2 4//2 6//2 5//2
|
||||
f 5//3 6//3 8//3 7//3
|
||||
f 7//4 8//4 10//4 9//4
|
||||
f 9//5 10//5 12//5 11//5
|
||||
f 11//6 12//6 14//6 13//6
|
||||
f 4//7 2//7 16//7 14//7 12//7 10//7 8//7 6//7
|
||||
f 13//8 14//8 16//8 15//8
|
||||
f 15//9 16//9 2//9 1//9
|
||||
f 1//10 3//10 5//10 7//10 9//10 11//10 13//10 15//10
|
||||
f 17//11 22//11 18//11
|
||||
f 18//12 22//12 19//12
|
||||
f 19//13 22//13 20//13
|
||||
f 20//14 22//14 21//14
|
||||
f 21//15 22//15 23//15
|
||||
f 23//16 22//16 24//16
|
||||
f 24//17 22//17 25//17
|
||||
f 25//18 22//18 26//18
|
||||
f 26//19 22//19 27//19
|
||||
f 27//20 22//20 28//20
|
||||
f 28//21 22//21 29//21
|
||||
f 29//22 22//22 30//22
|
||||
f 30//23 22//23 31//23
|
||||
f 31//24 22//24 32//24
|
||||
f 32//25 22//25 33//25
|
||||
f 33//26 22//26 17//26
|
||||
f 17//10 18//10 19//10 20//10 21//10 23//10 24//10 25//10 26//10 27//10 28//10 29//10 30//10 31//10 32//10 33//10
|
||||
o Cylinder.001_Cylinder
|
||||
v 0.000000 0.000000 -0.080000
|
||||
v 0.000000 2.000000 -0.080000
|
||||
v 0.056569 0.000000 -0.056569
|
||||
v 0.056569 2.000000 -0.056569
|
||||
v 0.080000 0.000000 0.000000
|
||||
v 0.080000 2.000000 0.000000
|
||||
v 0.056569 0.000000 0.056569
|
||||
v 0.056569 2.000000 0.056569
|
||||
v -0.000000 0.000000 0.080000
|
||||
v -0.000000 2.000000 0.080000
|
||||
v -0.056569 0.000000 0.056569
|
||||
v -0.056569 2.000000 0.056569
|
||||
v -0.080000 0.000000 -0.000000
|
||||
v -0.080000 2.000000 -0.000000
|
||||
v -0.056569 0.000000 -0.056569
|
||||
v -0.056569 2.000000 -0.056569
|
||||
v 0.000000 1.965651 -0.233061
|
||||
v 0.089189 1.965651 -0.215320
|
||||
v 0.164799 1.965651 -0.164799
|
||||
v 0.215320 1.965651 -0.089188
|
||||
v 0.233061 1.965651 0.000000
|
||||
v 0.000000 2.431772 0.000000
|
||||
v 0.215320 1.965651 0.089188
|
||||
v 0.164799 1.965651 0.164799
|
||||
v 0.089189 1.965651 0.215320
|
||||
v 0.000000 1.965651 0.233061
|
||||
v -0.089188 1.965651 0.215320
|
||||
v -0.164799 1.965651 0.164799
|
||||
v -0.215320 1.965651 0.089188
|
||||
v -0.233060 1.965651 -0.000000
|
||||
v -0.215320 1.965651 -0.089188
|
||||
v -0.164799 1.965651 -0.164799
|
||||
v -0.089188 1.965651 -0.215320
|
||||
vn 0.3827 0.0000 -0.9239
|
||||
vn 0.9239 0.0000 -0.3827
|
||||
vn 0.9239 0.0000 0.3827
|
||||
vn 0.3827 0.0000 0.9239
|
||||
vn -0.3827 0.0000 0.9239
|
||||
vn -0.9239 0.0000 0.3827
|
||||
vn 0.0000 1.0000 -0.0000
|
||||
vn -0.9239 0.0000 -0.3827
|
||||
vn -0.3827 0.0000 -0.9239
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.1752 0.4403 -0.8806
|
||||
vn 0.4988 0.4403 -0.7465
|
||||
vn 0.7465 0.4403 -0.4988
|
||||
vn 0.8806 0.4403 -0.1752
|
||||
vn 0.8806 0.4403 0.1752
|
||||
vn 0.7465 0.4403 0.4988
|
||||
vn 0.4988 0.4403 0.7465
|
||||
vn 0.1752 0.4403 0.8806
|
||||
vn -0.1752 0.4403 0.8806
|
||||
vn -0.4988 0.4403 0.7465
|
||||
vn -0.7465 0.4403 0.4988
|
||||
vn -0.8806 0.4403 0.1752
|
||||
vn -0.8806 0.4403 -0.1752
|
||||
vn -0.7465 0.4403 -0.4988
|
||||
vn -0.4988 0.4403 -0.7465
|
||||
vn -0.1752 0.4403 -0.8806
|
||||
usemtl None
|
||||
s off
|
||||
f 34//27 35//27 37//27 36//27
|
||||
f 36//28 37//28 39//28 38//28
|
||||
f 38//29 39//29 41//29 40//29
|
||||
f 40//30 41//30 43//30 42//30
|
||||
f 42//31 43//31 45//31 44//31
|
||||
f 44//32 45//32 47//32 46//32
|
||||
f 37//33 35//33 49//33 47//33 45//33 43//33 41//33 39//33
|
||||
f 46//34 47//34 49//34 48//34
|
||||
f 48//35 49//35 35//35 34//35
|
||||
f 34//36 36//36 38//36 40//36 42//36 44//36 46//36 48//36
|
||||
f 50//37 55//37 51//37
|
||||
f 51//38 55//38 52//38
|
||||
f 52//39 55//39 53//39
|
||||
f 53//40 55//40 54//40
|
||||
f 54//41 55//41 56//41
|
||||
f 56//42 55//42 57//42
|
||||
f 57//43 55//43 58//43
|
||||
f 58//44 55//44 59//44
|
||||
f 59//45 55//45 60//45
|
||||
f 60//46 55//46 61//46
|
||||
f 61//47 55//47 62//47
|
||||
f 62//48 55//48 63//48
|
||||
f 63//49 55//49 64//49
|
||||
f 64//50 55//50 65//50
|
||||
f 65//51 55//51 66//51
|
||||
f 66//52 55//52 50//52
|
||||
f 50//36 51//36 52//36 53//36 54//36 56//36 57//36 58//36 59//36 60//36 61//36 62//36 63//36 64//36 65//36 66//36
|
||||
o Cylinder
|
||||
v 0.000000 0.000000 -0.080000
|
||||
v 2.000000 0.000000 -0.080000
|
||||
v 0.000000 -0.056569 -0.056569
|
||||
v 2.000000 -0.056568 -0.056569
|
||||
v 0.000000 -0.080000 0.000000
|
||||
v 2.000000 -0.080000 0.000000
|
||||
v 0.000000 -0.056569 0.056569
|
||||
v 2.000000 -0.056568 0.056569
|
||||
v -0.000000 0.000000 0.080000
|
||||
v 2.000000 0.000000 0.080000
|
||||
v -0.000000 0.056569 0.056569
|
||||
v 2.000000 0.056569 0.056569
|
||||
v -0.000000 0.080000 -0.000000
|
||||
v 2.000000 0.080000 -0.000000
|
||||
v -0.000000 0.056569 -0.056569
|
||||
v 2.000000 0.056569 -0.056569
|
||||
v 1.965651 -0.000000 -0.233061
|
||||
v 1.965651 -0.089188 -0.215320
|
||||
v 1.965651 -0.164799 -0.164799
|
||||
v 1.965651 -0.215320 -0.089188
|
||||
v 1.965651 -0.233061 0.000000
|
||||
v 2.431772 0.000000 0.000000
|
||||
v 1.965651 -0.215320 0.089188
|
||||
v 1.965651 -0.164799 0.164799
|
||||
v 1.965651 -0.089188 0.215320
|
||||
v 1.965651 -0.000000 0.233061
|
||||
v 1.965651 0.089188 0.215320
|
||||
v 1.965651 0.164799 0.164799
|
||||
v 1.965651 0.215320 0.089188
|
||||
v 1.965651 0.233061 -0.000000
|
||||
v 1.965651 0.215320 -0.089188
|
||||
v 1.965651 0.164799 -0.164799
|
||||
v 1.965651 0.089188 -0.215320
|
||||
vn 0.0000 -0.3827 -0.9239
|
||||
vn 0.0000 -0.9239 -0.3827
|
||||
vn 0.0000 -0.9239 0.3827
|
||||
vn 0.0000 -0.3827 0.9239
|
||||
vn -0.0000 0.3827 0.9239
|
||||
vn -0.0000 0.9239 0.3827
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
vn -0.0000 0.9239 -0.3827
|
||||
vn -0.0000 0.3827 -0.9239
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
vn 0.4403 -0.1752 -0.8806
|
||||
vn 0.4403 -0.4988 -0.7465
|
||||
vn 0.4403 -0.7465 -0.4988
|
||||
vn 0.4403 -0.8806 -0.1752
|
||||
vn 0.4403 -0.8806 0.1752
|
||||
vn 0.4403 -0.7465 0.4988
|
||||
vn 0.4403 -0.4988 0.7465
|
||||
vn 0.4403 -0.1752 0.8806
|
||||
vn 0.4403 0.1752 0.8806
|
||||
vn 0.4403 0.4988 0.7465
|
||||
vn 0.4403 0.7465 0.4988
|
||||
vn 0.4403 0.8806 0.1752
|
||||
vn 0.4403 0.8806 -0.1752
|
||||
vn 0.4403 0.7465 -0.4988
|
||||
vn 0.4403 0.4988 -0.7465
|
||||
vn 0.4403 0.1752 -0.8806
|
||||
usemtl None
|
||||
s off
|
||||
f 67//53 68//53 70//53 69//53
|
||||
f 69//54 70//54 72//54 71//54
|
||||
f 71//55 72//55 74//55 73//55
|
||||
f 73//56 74//56 76//56 75//56
|
||||
f 75//57 76//57 78//57 77//57
|
||||
f 77//58 78//58 80//58 79//58
|
||||
f 70//59 68//59 82//59 80//59 78//59 76//59 74//59 72//59
|
||||
f 79//60 80//60 82//60 81//60
|
||||
f 81//61 82//61 68//61 67//61
|
||||
f 67//62 69//62 71//62 73//62 75//62 77//62 79//62 81//62
|
||||
f 83//63 88//63 84//63
|
||||
f 84//64 88//64 85//64
|
||||
f 85//65 88//65 86//65
|
||||
f 86//66 88//66 87//66
|
||||
f 87//67 88//67 89//67
|
||||
f 89//68 88//68 90//68
|
||||
f 90//69 88//69 91//69
|
||||
f 91//70 88//70 92//70
|
||||
f 92//71 88//71 93//71
|
||||
f 93//72 88//72 94//72
|
||||
f 94//73 88//73 95//73
|
||||
f 95//74 88//74 96//74
|
||||
f 96//75 88//75 97//75
|
||||
f 97//76 88//76 98//76
|
||||
f 98//77 88//77 99//77
|
||||
f 99//78 88//78 83//78
|
||||
f 83//62 84//62 85//62 86//62 87//62 89//62 90//62 91//62 92//62 93//62 94//62 95//62 96//62 97//62 98//62 99//62
|
||||
o Text.005
|
||||
v 0.778616 0.000000 -3.449000
|
||||
v 0.395616 0.000000 -3.449000
|
||||
v 0.395616 0.000000 -3.369000
|
||||
v 0.623616 0.000000 -3.369000
|
||||
v 0.385616 0.000000 -3.000000
|
||||
v 0.779616 0.000000 -3.000000
|
||||
v 0.779616 0.000000 -3.080000
|
||||
v 0.539616 0.000000 -3.080000
|
||||
v 0.334616 0.000000 -3.267000
|
||||
v 0.091616 0.000000 -3.267000
|
||||
v 0.091616 0.000000 -3.174000
|
||||
v 0.334616 0.000000 -3.174000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 102//79 100//79 101//79
|
||||
f 102//79 103//79 100//79
|
||||
f 103//79 107//79 100//79
|
||||
f 104//79 107//79 103//79
|
||||
f 104//79 106//79 107//79
|
||||
f 104//79 105//79 106//79
|
||||
f 110//79 108//79 109//79
|
||||
f 110//79 111//79 108//79
|
||||
o Text.004
|
||||
v 1.039616 0.000000 2.551000
|
||||
v 0.656616 0.000000 2.551000
|
||||
v 0.656616 0.000000 2.631000
|
||||
v 0.884616 0.000000 2.631000
|
||||
v 0.646616 0.000000 3.000000
|
||||
v 1.040616 0.000000 3.000000
|
||||
v 1.040616 0.000000 2.920000
|
||||
v 0.800616 0.000000 2.920000
|
||||
v 0.302616 0.000000 2.411000
|
||||
v 0.302616 0.000000 2.606000
|
||||
v 0.107616 0.000000 2.606000
|
||||
v 0.107616 0.000000 2.688000
|
||||
v 0.302616 0.000000 2.688000
|
||||
v 0.302616 0.000000 2.883000
|
||||
v 0.384616 0.000000 2.883000
|
||||
v 0.384616 0.000000 2.688000
|
||||
v 0.579616 0.000000 2.688000
|
||||
v 0.579616 0.000000 2.606000
|
||||
v 0.384616 0.000000 2.606000
|
||||
v 0.384616 0.000000 2.411000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 114//80 112//80 113//80
|
||||
f 114//80 115//80 112//80
|
||||
f 115//80 119//80 112//80
|
||||
f 116//80 119//80 115//80
|
||||
f 116//80 118//80 119//80
|
||||
f 116//80 117//80 118//80
|
||||
f 121//80 131//80 120//80
|
||||
f 121//80 130//80 131//80
|
||||
f 123//80 121//80 122//80
|
||||
f 123//80 130//80 121//80
|
||||
f 123//80 129//80 130//80
|
||||
f 123//80 128//80 129//80
|
||||
f 124//81 128//81 123//81
|
||||
f 125//80 127//80 124//80
|
||||
f 127//81 128//81 124//81
|
||||
f 125//80 126//80 127//80
|
||||
o Text.003
|
||||
v 0.812616 -2.551000 -0.000000
|
||||
v 0.712616 -2.551000 -0.000000
|
||||
v 0.596616 -2.804000 -0.000000
|
||||
v 0.475616 -2.551000 -0.000000
|
||||
v 0.374616 -2.551000 -0.000000
|
||||
v 0.548616 -2.904000 -0.000000
|
||||
v 0.395616 -3.230000 0.000000
|
||||
v 0.494616 -3.230000 0.000000
|
||||
v 0.334616 -2.733000 -0.000000
|
||||
v 0.091616 -2.733000 -0.000000
|
||||
v 0.091616 -2.826000 -0.000000
|
||||
v 0.334616 -2.826000 -0.000000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 137//82 135//82 136//82
|
||||
f 137//82 134//82 135//82
|
||||
f 134//82 132//82 133//82
|
||||
f 134//82 139//82 132//82
|
||||
f 137//82 139//82 134//82
|
||||
f 138//82 139//82 137//82
|
||||
f 142//82 140//82 141//82
|
||||
f 142//82 143//82 140//82
|
||||
o Text.002
|
||||
v 1.073616 3.449000 -0.000000
|
||||
v 0.973616 3.449000 -0.000000
|
||||
v 0.857616 3.196000 -0.000000
|
||||
v 0.736616 3.449000 -0.000000
|
||||
v 0.635616 3.449000 -0.000000
|
||||
v 0.809616 3.096000 -0.000000
|
||||
v 0.656616 2.770000 0.000000
|
||||
v 0.755616 2.770000 0.000000
|
||||
v 0.302616 3.589000 -0.000000
|
||||
v 0.302616 3.394000 -0.000000
|
||||
v 0.107616 3.394000 -0.000000
|
||||
v 0.107616 3.312000 -0.000000
|
||||
v 0.302616 3.312000 -0.000000
|
||||
v 0.302616 3.117000 -0.000000
|
||||
v 0.384616 3.117000 -0.000000
|
||||
v 0.384616 3.312000 -0.000000
|
||||
v 0.579616 3.312000 -0.000000
|
||||
v 0.579616 3.394000 -0.000000
|
||||
v 0.384616 3.394000 -0.000000
|
||||
v 0.384616 3.589000 -0.000000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 149//83 147//83 148//83
|
||||
f 149//83 146//83 147//83
|
||||
f 146//83 144//83 145//83
|
||||
f 146//83 151//83 144//83
|
||||
f 149//83 151//83 146//83
|
||||
f 150//83 151//83 149//83
|
||||
f 153//83 163//83 152//83
|
||||
f 153//83 162//83 163//83
|
||||
f 155//83 153//83 154//83
|
||||
f 155//83 162//83 153//83
|
||||
f 155//83 161//83 162//83
|
||||
f 155//83 160//83 161//83
|
||||
f 156//84 160//84 155//84
|
||||
f 157//83 159//83 156//83
|
||||
f 159//83 160//83 156//83
|
||||
f 157//83 158//83 159//83
|
||||
o Text.001
|
||||
v -3.138384 0.000000 -0.449000
|
||||
v -3.252384 0.000000 -0.449000
|
||||
v -3.380384 0.000000 -0.295000
|
||||
v -3.513384 0.000000 -0.449000
|
||||
v -3.625384 0.000000 -0.449000
|
||||
v -3.436384 0.000000 -0.228000
|
||||
v -3.625384 0.000000 0.000000
|
||||
v -3.513384 0.000000 0.000000
|
||||
v -3.380384 0.000000 -0.161000
|
||||
v -3.239384 0.000000 0.000000
|
||||
v -3.125384 0.000000 0.000000
|
||||
v -3.323384 0.000000 -0.228000
|
||||
v -3.665384 0.000000 -0.267000
|
||||
v -3.908384 0.000000 -0.267000
|
||||
v -3.908384 0.000000 -0.174000
|
||||
v -3.665384 0.000000 -0.174000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 169//85 167//85 168//85
|
||||
f 169//85 166//85 167//85
|
||||
f 166//85 164//85 165//85
|
||||
f 166//85 175//85 164//85
|
||||
f 169//85 175//85 166//85
|
||||
f 170//85 175//85 169//85
|
||||
f 170//85 172//85 175//85
|
||||
f 172//85 174//85 175//85
|
||||
f 170//85 171//85 172//85
|
||||
f 173//85 174//85 172//85
|
||||
f 178//85 176//85 177//85
|
||||
f 178//85 179//85 176//85
|
||||
o Text
|
||||
v 4.122616 0.000000 -0.449000
|
||||
v 4.008616 0.000000 -0.449000
|
||||
v 3.880616 0.000000 -0.295000
|
||||
v 3.747616 0.000000 -0.449000
|
||||
v 3.635616 0.000000 -0.449000
|
||||
v 3.824616 0.000000 -0.228000
|
||||
v 3.635616 0.000000 0.000000
|
||||
v 3.747616 0.000000 0.000000
|
||||
v 3.880616 0.000000 -0.161000
|
||||
v 4.021616 0.000000 0.000000
|
||||
v 4.135616 0.000000 0.000000
|
||||
v 3.937616 0.000000 -0.228000
|
||||
v 3.302616 0.000000 -0.589000
|
||||
v 3.302616 0.000000 -0.394000
|
||||
v 3.107616 0.000000 -0.394000
|
||||
v 3.107616 0.000000 -0.312000
|
||||
v 3.302616 0.000000 -0.312000
|
||||
v 3.302616 0.000000 -0.117000
|
||||
v 3.384616 0.000000 -0.117000
|
||||
v 3.384616 0.000000 -0.312000
|
||||
v 3.579616 0.000000 -0.312000
|
||||
v 3.579616 0.000000 -0.394000
|
||||
v 3.384616 0.000000 -0.394000
|
||||
v 3.384616 0.000000 -0.589000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
usemtl None
|
||||
s off
|
||||
f 185//86 183//86 184//86
|
||||
f 185//86 182//86 183//86
|
||||
f 182//86 180//86 181//86
|
||||
f 182//86 191//86 180//86
|
||||
f 185//86 191//86 182//86
|
||||
f 186//86 191//86 185//86
|
||||
f 186//86 188//86 191//86
|
||||
f 188//86 190//86 191//86
|
||||
f 186//86 187//86 188//86
|
||||
f 189//86 190//86 188//86
|
||||
f 193//86 203//86 192//86
|
||||
f 193//86 202//86 203//86
|
||||
f 195//86 193//86 194//86
|
||||
f 195//86 202//86 193//86
|
||||
f 195//86 201//86 202//86
|
||||
f 195//86 200//86 201//86
|
||||
f 196//87 200//87 195//87
|
||||
f 197//86 199//86 196//86
|
||||
f 199//87 200//87 196//87
|
||||
f 197//86 198//86 199//86
|
||||
22
example/Makefile
Normal file
22
example/Makefile
Normal file
@@ -0,0 +1,22 @@
|
||||
BUILD_DIR=build
|
||||
|
||||
CXXFLAGS+=-std=c++11
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
glfw:
|
||||
mkdir -p $(BUILD_DIR)/glfw
|
||||
cd $(BUILD_DIR)/glfw \
|
||||
&& cmake -DGLFW_BUILD_TESTS=off -DGLFW_BUILD_DOCS=off -DGLFW_BUILD_EXAMPLES=off ../../external/glfw \
|
||||
&& make
|
||||
|
||||
example:
|
||||
mkdir -p $(BUILD_DIR)/example
|
||||
cd $(BUILD_DIR)/example \
|
||||
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmmexample \
|
||||
-I../../external/glfw/include -I../../.. \
|
||||
-L../glfw/src \
|
||||
-lglew -lglfw3 \
|
||||
-framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo \
|
||||
../../src/*.cpp
|
||||
10
example/MonkeyFlat.mtl
Normal file
10
example/MonkeyFlat.mtl
Normal file
@@ -0,0 +1,10 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl None
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
1512
example/MonkeyFlat.obj
Normal file
1512
example/MonkeyFlat.obj
Normal file
File diff suppressed because it is too large
Load Diff
10
example/MonkeySmooth.mtl
Normal file
10
example/MonkeySmooth.mtl
Normal file
@@ -0,0 +1,10 @@
|
||||
# Blender MTL File: 'None'
|
||||
# Material Count: 1
|
||||
|
||||
newmtl None
|
||||
Ns 0
|
||||
Ka 0.000000 0.000000 0.000000
|
||||
Kd 0.8 0.8 0.8
|
||||
Ks 0.8 0.8 0.8
|
||||
d 1
|
||||
illum 2
|
||||
5998
example/MonkeySmooth.obj
Normal file
5998
example/MonkeySmooth.obj
Normal file
File diff suppressed because it is too large
Load Diff
14
example/build.bat
Normal file
14
example/build.bat
Normal file
@@ -0,0 +1,14 @@
|
||||
@echo off
|
||||
|
||||
mkdir build\example
|
||||
pushd build\example
|
||||
cl^
|
||||
/I..\..\.. /I..\..\external\glew\include /I..\..\external\glfw-win64\include^
|
||||
/MD /EHsc^
|
||||
..\..\src\*.cpp^
|
||||
/Fehmm_example.exe^
|
||||
/link^
|
||||
/LIBPATH:..\..\external\glew\lib\Release\x64 /LIBPATH:..\..\external\glfw-win64\lib-vc2015^
|
||||
opengl32.lib gdi32.lib user32.lib shell32.lib glew32.lib glfw3.lib
|
||||
copy ..\..\external\glew\bin\Release\x64\glew32.dll glew32.dll
|
||||
popd
|
||||
73
example/external/glew/LICENSE.txt
vendored
Normal file
73
example/external/glew/LICENSE.txt
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
The OpenGL Extension Wrangler Library
|
||||
Copyright (C) 2002-2007, Milan Ikits <milan ikits[]ieee org>
|
||||
Copyright (C) 2002-2007, Marcelo E. Magallon <mmagallo[]debian org>
|
||||
Copyright (C) 2002, Lev Povalahev
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* The name of the author may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
Mesa 3-D graphics library
|
||||
Version: 7.0
|
||||
|
||||
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
Copyright (c) 2007 The Khronos Group Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and/or associated documentation files (the
|
||||
"Materials"), to deal in the Materials without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Materials, and to
|
||||
permit persons to whom the Materials are furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Materials.
|
||||
|
||||
THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||
2618
example/external/glew/include/GL/eglew.h
vendored
Normal file
2618
example/external/glew/include/GL/eglew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
23686
example/external/glew/include/GL/glew.h
vendored
Normal file
23686
example/external/glew/include/GL/glew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1775
example/external/glew/include/GL/glxew.h
vendored
Normal file
1775
example/external/glew/include/GL/glxew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1447
example/external/glew/include/GL/wglew.h
vendored
Normal file
1447
example/external/glew/include/GL/wglew.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1
example/external/glfw
vendored
Submodule
1
example/external/glfw
vendored
Submodule
Submodule example/external/glfw added at 617a322bd8
22
example/external/glfw-win64/COPYING.txt
vendored
Normal file
22
example/external/glfw-win64/COPYING.txt
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
Copyright (c) 2002-2006 Marcus Geelnard
|
||||
Copyright (c) 2006-2016 Camilla Berglund <elmindreda@glfw.org>
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would
|
||||
be appreciated but is not required.
|
||||
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
4248
example/external/glfw-win64/include/GLFW/glfw3.h
vendored
Normal file
4248
example/external/glfw-win64/include/GLFW/glfw3.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
456
example/external/glfw-win64/include/GLFW/glfw3native.h
vendored
Normal file
456
example/external/glfw-win64/include/GLFW/glfw3native.h
vendored
Normal file
@@ -0,0 +1,456 @@
|
||||
/*************************************************************************
|
||||
* GLFW 3.2 - www.glfw.org
|
||||
* A library for OpenGL, window and input
|
||||
*------------------------------------------------------------------------
|
||||
* Copyright (c) 2002-2006 Marcus Geelnard
|
||||
* Copyright (c) 2006-2016 Camilla Berglund <elmindreda@glfw.org>
|
||||
*
|
||||
* This software is provided 'as-is', without any express or implied
|
||||
* warranty. In no event will the authors be held liable for any damages
|
||||
* arising from the use of this software.
|
||||
*
|
||||
* Permission is granted to anyone to use this software for any purpose,
|
||||
* including commercial applications, and to alter it and redistribute it
|
||||
* freely, subject to the following restrictions:
|
||||
*
|
||||
* 1. The origin of this software must not be misrepresented; you must not
|
||||
* claim that you wrote the original software. If you use this software
|
||||
* in a product, an acknowledgment in the product documentation would
|
||||
* be appreciated but is not required.
|
||||
*
|
||||
* 2. Altered source versions must be plainly marked as such, and must not
|
||||
* be misrepresented as being the original software.
|
||||
*
|
||||
* 3. This notice may not be removed or altered from any source
|
||||
* distribution.
|
||||
*
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef _glfw3_native_h_
|
||||
#define _glfw3_native_h_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* Doxygen documentation
|
||||
*************************************************************************/
|
||||
|
||||
/*! @file glfw3native.h
|
||||
* @brief The header of the native access functions.
|
||||
*
|
||||
* This is the header file of the native access functions. See @ref native for
|
||||
* more information.
|
||||
*/
|
||||
/*! @defgroup native Native access
|
||||
*
|
||||
* **By using the native access functions you assert that you know what you're
|
||||
* doing and how to fix problems caused by using them. If you don't, you
|
||||
* shouldn't be using them.**
|
||||
*
|
||||
* Before the inclusion of @ref glfw3native.h, you may define exactly one
|
||||
* window system API macro and zero or more context creation API macros.
|
||||
*
|
||||
* The chosen backends must match those the library was compiled for. Failure
|
||||
* to do this will cause a link-time error.
|
||||
*
|
||||
* The available window API macros are:
|
||||
* * `GLFW_EXPOSE_NATIVE_WIN32`
|
||||
* * `GLFW_EXPOSE_NATIVE_COCOA`
|
||||
* * `GLFW_EXPOSE_NATIVE_X11`
|
||||
* * `GLFW_EXPOSE_NATIVE_WAYLAND`
|
||||
* * `GLFW_EXPOSE_NATIVE_MIR`
|
||||
*
|
||||
* The available context API macros are:
|
||||
* * `GLFW_EXPOSE_NATIVE_WGL`
|
||||
* * `GLFW_EXPOSE_NATIVE_NSGL`
|
||||
* * `GLFW_EXPOSE_NATIVE_GLX`
|
||||
* * `GLFW_EXPOSE_NATIVE_EGL`
|
||||
*
|
||||
* These macros select which of the native access functions that are declared
|
||||
* and which platform-specific headers to include. It is then up your (by
|
||||
* definition platform-specific) code to handle which of these should be
|
||||
* defined.
|
||||
*/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* System headers and types
|
||||
*************************************************************************/
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WIN32)
|
||||
// This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
|
||||
// example to allow applications to correctly declare a GL_ARB_debug_output
|
||||
// callback) but windows.h assumes no one will define APIENTRY before it does
|
||||
#undef APIENTRY
|
||||
#include <windows.h>
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_COCOA)
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
#if defined(__OBJC__)
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#else
|
||||
typedef void* id;
|
||||
#endif
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_X11)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)
|
||||
#include <wayland-client.h>
|
||||
#elif defined(GLFW_EXPOSE_NATIVE_MIR)
|
||||
#include <mir_toolkit/mir_client_library.h>
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WGL)
|
||||
/* WGL is declared by windows.h */
|
||||
#endif
|
||||
#if defined(GLFW_EXPOSE_NATIVE_NSGL)
|
||||
/* NSGL is declared by Cocoa.h */
|
||||
#endif
|
||||
#if defined(GLFW_EXPOSE_NATIVE_GLX)
|
||||
#include <GL/glx.h>
|
||||
#endif
|
||||
#if defined(GLFW_EXPOSE_NATIVE_EGL)
|
||||
#include <EGL/egl.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
* Functions
|
||||
*************************************************************************/
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WIN32)
|
||||
/*! @brief Returns the adapter device name of the specified monitor.
|
||||
*
|
||||
* @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)
|
||||
* of the specified monitor, or `NULL` if an [error](@ref error_handling)
|
||||
* occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the display device name of the specified monitor.
|
||||
*
|
||||
* @return The UTF-8 encoded display device name (for example
|
||||
* `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `HWND` of the specified window.
|
||||
*
|
||||
* @return The `HWND` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WGL)
|
||||
/*! @brief Returns the `HGLRC` of the specified window.
|
||||
*
|
||||
* @return The `HGLRC` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_COCOA)
|
||||
/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.
|
||||
*
|
||||
* @return The `CGDirectDisplayID` of the specified monitor, or
|
||||
* `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `NSWindow` of the specified window.
|
||||
*
|
||||
* @return The `NSWindow` of the specified window, or `nil` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_NSGL)
|
||||
/*! @brief Returns the `NSOpenGLContext` of the specified window.
|
||||
*
|
||||
* @return The `NSOpenGLContext` of the specified window, or `nil` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_X11)
|
||||
/*! @brief Returns the `Display` used by GLFW.
|
||||
*
|
||||
* @return The `Display` used by GLFW, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI Display* glfwGetX11Display(void);
|
||||
|
||||
/*! @brief Returns the `RRCrtc` of the specified monitor.
|
||||
*
|
||||
* @return The `RRCrtc` of the specified monitor, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `RROutput` of the specified monitor.
|
||||
*
|
||||
* @return The `RROutput` of the specified monitor, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.1.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `Window` of the specified window.
|
||||
*
|
||||
* @return The `Window` of the specified window, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_GLX)
|
||||
/*! @brief Returns the `GLXContext` of the specified window.
|
||||
*
|
||||
* @return The `GLXContext` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
|
||||
|
||||
/*! @brief Returns the `GLXWindow` of the specified window.
|
||||
*
|
||||
* @return The `GLXWindow` of the specified window, or `None` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
|
||||
/*! @brief Returns the `struct wl_display*` used by GLFW.
|
||||
*
|
||||
* @return The `struct wl_display*` used by GLFW, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
|
||||
|
||||
/*! @brief Returns the `struct wl_output*` of the specified monitor.
|
||||
*
|
||||
* @return The `struct wl_output*` of the specified monitor, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the main `struct wl_surface*` of the specified window.
|
||||
*
|
||||
* @return The main `struct wl_surface*` of the specified window, or `NULL` if
|
||||
* an [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_MIR)
|
||||
/*! @brief Returns the `MirConnection*` used by GLFW.
|
||||
*
|
||||
* @return The `MirConnection*` used by GLFW, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI MirConnection* glfwGetMirDisplay(void);
|
||||
|
||||
/*! @brief Returns the Mir output ID of the specified monitor.
|
||||
*
|
||||
* @return The Mir output ID of the specified monitor, or zero if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI int glfwGetMirMonitor(GLFWmonitor* monitor);
|
||||
|
||||
/*! @brief Returns the `MirSurface*` of the specified window.
|
||||
*
|
||||
* @return The `MirSurface*` of the specified window, or `NULL` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.2.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI MirSurface* glfwGetMirWindow(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#if defined(GLFW_EXPOSE_NATIVE_EGL)
|
||||
/*! @brief Returns the `EGLDisplay` used by GLFW.
|
||||
*
|
||||
* @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
|
||||
|
||||
/*! @brief Returns the `EGLContext` of the specified window.
|
||||
*
|
||||
* @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
|
||||
|
||||
/*! @brief Returns the `EGLSurface` of the specified window.
|
||||
*
|
||||
* @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an
|
||||
* [error](@ref error_handling) occurred.
|
||||
*
|
||||
* @thread_safety This function may be called from any thread. Access is not
|
||||
* synchronized.
|
||||
*
|
||||
* @since Added in version 3.0.
|
||||
*
|
||||
* @ingroup native
|
||||
*/
|
||||
GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _glfw3_native_h_ */
|
||||
|
||||
5
example/shell.bat
Normal file
5
example/shell.bat
Normal file
@@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
|
||||
if not defined ORIGINALPATH set ORIGINALPATH=%PATH%
|
||||
set PATH=%ORIGINALPATH%
|
||||
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
|
||||
161
example/src/Cube.h
Normal file
161
example/src/Cube.h
Normal file
@@ -0,0 +1,161 @@
|
||||
#include <HandmadeMath.h>
|
||||
|
||||
#include "Entity.h"
|
||||
#include "RenderComponent.h"
|
||||
|
||||
#ifndef HMME_CUBE_H
|
||||
#define HMME_CUBE_H
|
||||
|
||||
// Our vertices. Three consecutive floats give a 3D vertex; Three consecutive vertices give a triangle.
|
||||
// A cube has 6 faces with 2 triangles each, so this makes 6*2=12 triangles, and 12*3 vertices
|
||||
static const GLfloat cubeVertices[] = {
|
||||
-1.0f,-1.0f,-1.0f, // triangle 1 : begin
|
||||
-1.0f,-1.0f, 1.0f,
|
||||
-1.0f, 1.0f, 1.0f, // triangle 1 : end
|
||||
1.0f, 1.0f,-1.0f, // triangle 2 : begin
|
||||
-1.0f,-1.0f,-1.0f,
|
||||
-1.0f, 1.0f,-1.0f, // triangle 2 : end
|
||||
1.0f,-1.0f, 1.0f,
|
||||
-1.0f,-1.0f,-1.0f,
|
||||
1.0f,-1.0f,-1.0f,
|
||||
1.0f, 1.0f,-1.0f,
|
||||
1.0f,-1.0f,-1.0f,
|
||||
-1.0f,-1.0f,-1.0f,
|
||||
-1.0f,-1.0f,-1.0f,
|
||||
-1.0f, 1.0f, 1.0f,
|
||||
-1.0f, 1.0f,-1.0f,
|
||||
1.0f,-1.0f, 1.0f,
|
||||
-1.0f,-1.0f, 1.0f,
|
||||
-1.0f,-1.0f,-1.0f,
|
||||
-1.0f, 1.0f, 1.0f,
|
||||
-1.0f,-1.0f, 1.0f,
|
||||
1.0f,-1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
1.0f,-1.0f,-1.0f,
|
||||
1.0f, 1.0f,-1.0f,
|
||||
1.0f,-1.0f,-1.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
1.0f,-1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
1.0f, 1.0f,-1.0f,
|
||||
-1.0f, 1.0f,-1.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
-1.0f, 1.0f,-1.0f,
|
||||
-1.0f, 1.0f, 1.0f,
|
||||
1.0f, 1.0f, 1.0f,
|
||||
-1.0f, 1.0f, 1.0f,
|
||||
1.0f,-1.0f, 1.0f
|
||||
};
|
||||
|
||||
// One color for each vertex. They were generated randomly.
|
||||
static const GLfloat cubeColors[] = {
|
||||
0.583f, 0.771f, 0.014f,
|
||||
0.609f, 0.115f, 0.436f,
|
||||
0.327f, 0.483f, 0.844f,
|
||||
0.822f, 0.569f, 0.201f,
|
||||
0.435f, 0.602f, 0.223f,
|
||||
0.310f, 0.747f, 0.185f,
|
||||
0.597f, 0.770f, 0.761f,
|
||||
0.559f, 0.436f, 0.730f,
|
||||
0.359f, 0.583f, 0.152f,
|
||||
0.483f, 0.596f, 0.789f,
|
||||
0.559f, 0.861f, 0.639f,
|
||||
0.195f, 0.548f, 0.859f,
|
||||
0.014f, 0.184f, 0.576f,
|
||||
0.771f, 0.328f, 0.970f,
|
||||
0.406f, 0.615f, 0.116f,
|
||||
0.676f, 0.977f, 0.133f,
|
||||
0.971f, 0.572f, 0.833f,
|
||||
0.140f, 0.616f, 0.489f,
|
||||
0.997f, 0.513f, 0.064f,
|
||||
0.945f, 0.719f, 0.592f,
|
||||
0.543f, 0.021f, 0.978f,
|
||||
0.279f, 0.317f, 0.505f,
|
||||
0.167f, 0.620f, 0.077f,
|
||||
0.347f, 0.857f, 0.137f,
|
||||
0.055f, 0.953f, 0.042f,
|
||||
0.714f, 0.505f, 0.345f,
|
||||
0.783f, 0.290f, 0.734f,
|
||||
0.722f, 0.645f, 0.174f,
|
||||
0.302f, 0.455f, 0.848f,
|
||||
0.225f, 0.587f, 0.040f,
|
||||
0.517f, 0.713f, 0.338f,
|
||||
0.053f, 0.959f, 0.120f,
|
||||
0.393f, 0.621f, 0.362f,
|
||||
0.673f, 0.211f, 0.457f,
|
||||
0.820f, 0.883f, 0.371f,
|
||||
0.982f, 0.099f, 0.879f
|
||||
};
|
||||
|
||||
class CubeRenderComponent : public RenderComponent {
|
||||
public:
|
||||
GLuint vaoID;
|
||||
GLuint vertexBufferID;
|
||||
GLuint colorBufferID;
|
||||
|
||||
CubeRenderComponent() {
|
||||
glGenVertexArrays(1, &vaoID);
|
||||
|
||||
glGenBuffers(1, &vertexBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(cubeVertices), cubeVertices, GL_STATIC_DRAW);
|
||||
|
||||
glGenBuffers(1, &colorBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, colorBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(cubeColors), cubeColors, GL_STATIC_DRAW);
|
||||
}
|
||||
|
||||
void Draw() override {
|
||||
glBindVertexArray(vaoID);
|
||||
|
||||
// 1st attribute buffer : vertices
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);
|
||||
glVertexAttribPointer(
|
||||
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// 2nd attribute buffer : colors
|
||||
glEnableVertexAttribArray(1);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, colorBufferID);
|
||||
glVertexAttribPointer(
|
||||
1, // attribute. No particular reason for 1, but must match the layout in the shader.
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// Shader??
|
||||
|
||||
// Draw the triangle!
|
||||
glDrawArrays(GL_TRIANGLES, 0, 36); // Starting from vertex 0; 3 vertices total -> 1 triangle
|
||||
glDisableVertexAttribArray(0);
|
||||
glDisableVertexAttribArray(1);
|
||||
}
|
||||
};
|
||||
|
||||
class Cube : public Entity {
|
||||
public:
|
||||
float x = 0;
|
||||
CubeRenderComponent rc = CubeRenderComponent();
|
||||
|
||||
Cube() {
|
||||
// renderComponent = &rc;
|
||||
}
|
||||
|
||||
void Tick(float deltaSeconds, Input previousInput, Input input) override {
|
||||
x += deltaSeconds;
|
||||
// position.X = 2.0f * HMM_SINF(x);
|
||||
|
||||
rotation *= HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 1.0f, 0.0f), deltaSeconds * HMM_ToRadians(45.0f));
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
119
example/src/Entity.h
Normal file
119
example/src/Entity.h
Normal file
@@ -0,0 +1,119 @@
|
||||
#include <vector>
|
||||
|
||||
#include <HandmadeMath.h>
|
||||
|
||||
#ifndef HMME_ENTITY_H
|
||||
#define HMME_ENTITY_H
|
||||
|
||||
#include "RenderComponent.h"
|
||||
|
||||
class Entity {
|
||||
public:
|
||||
hmm_vec3 position = HMM_Vec3(0.0f, 0.0f, 0.0f);
|
||||
hmm_quaternion rotation = HMM_Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
hmm_vec3 scale = HMM_Vec3(1.0f, 1.0f, 1.0f);
|
||||
|
||||
std::vector<Entity*> children;
|
||||
|
||||
void AddChild(Entity* e) {
|
||||
children.push_back(e);
|
||||
}
|
||||
|
||||
virtual void Tick(float deltaSeconds, Input previousInput, Input input) {}
|
||||
|
||||
RenderComponent *renderComponent = NULL;
|
||||
|
||||
struct CameraInfo {
|
||||
float fov = 90.0f;
|
||||
float aspect = 1024.0f / 768.0f;
|
||||
float near = 0.1f;
|
||||
float far = 100.0f;
|
||||
};
|
||||
CameraInfo camera;
|
||||
|
||||
hmm_mat4 projectionMatrix() {
|
||||
return HMM_Perspective(camera.fov, camera.aspect, camera.near, camera.far);
|
||||
}
|
||||
|
||||
hmm_mat4 viewMatrix() {
|
||||
return HMM_LookAt(worldPosition(), worldPosition() + forward(), up());
|
||||
}
|
||||
|
||||
hmm_vec3 worldPosition() {
|
||||
return (modelMatrix * HMM_Vec4(0.0f, 0.0f, 0.0f, 1.0f)).XYZ;
|
||||
}
|
||||
|
||||
hmm_vec3 up() {
|
||||
return (modelMatrix * HMM_Vec4(0.0f, 1.0f, 0.0f, 1.0f)).XYZ - worldPosition();
|
||||
}
|
||||
|
||||
hmm_vec3 forward() {
|
||||
return (modelMatrix * HMM_Vec4(1.0f, 0.0f, 0.0f, 1.0f)).XYZ - worldPosition();
|
||||
}
|
||||
|
||||
hmm_vec3 right() {
|
||||
return (modelMatrix * HMM_Vec4(0.0f, 0.0f, 1.0f, 1.0f)).XYZ - worldPosition();
|
||||
}
|
||||
|
||||
// Context for rendering and stuff
|
||||
hmm_mat4 parentModelMatrix;
|
||||
hmm_mat4 modelMatrix;
|
||||
};
|
||||
|
||||
class EntityIterator {
|
||||
public:
|
||||
typedef struct State {
|
||||
Entity *entity;
|
||||
int childIndex;
|
||||
|
||||
State(Entity *e) {
|
||||
entity = e;
|
||||
childIndex = -1;
|
||||
}
|
||||
} State;
|
||||
|
||||
EntityIterator(Entity *e) {
|
||||
stack.push_back(State(e));
|
||||
}
|
||||
|
||||
bool HasNext() {
|
||||
return !stack.empty();
|
||||
}
|
||||
|
||||
Entity *Next() {
|
||||
Entity *result = 0;
|
||||
|
||||
// Pass 1 - get a result by either grabbing the current entity or making another state
|
||||
while (true) {
|
||||
State *state = &stack.back();
|
||||
|
||||
if (state->childIndex < 0) {
|
||||
result = state->entity;
|
||||
state->childIndex = 0;
|
||||
break;
|
||||
} else {
|
||||
int nextIndex = state->childIndex;
|
||||
state->childIndex++;
|
||||
stack.push_back(State(state->entity->children[nextIndex]));
|
||||
}
|
||||
}
|
||||
|
||||
// Pass 2 - remove exhausted states from the stack
|
||||
while (!stack.empty()) {
|
||||
State state = stack.back();
|
||||
|
||||
if (state.childIndex >= state.entity->children.size()) {
|
||||
stack.pop_back();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<State> stack;
|
||||
};
|
||||
|
||||
#endif
|
||||
62
example/src/FPSCam.h
Normal file
62
example/src/FPSCam.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#include <stdio.h>
|
||||
#include <tgmath.h>
|
||||
|
||||
#ifndef HMME_FPSCAM_H
|
||||
#define HMME_FPSCAM_H
|
||||
|
||||
#include "Entity.h"
|
||||
#include "FollowCam.h"
|
||||
#include "HandmadeMath.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
class FPSCam : public Entity {
|
||||
public:
|
||||
FollowCam cam = FollowCam(0); // TODO: Why on earth is this necessary?? Remove this and fix the error.
|
||||
Entity target;
|
||||
|
||||
// all angles in radians
|
||||
float yaw = 0;
|
||||
float pitch = 0;
|
||||
float sensitivity = 0.002f;
|
||||
|
||||
FPSCam() {
|
||||
target = Entity();
|
||||
target.position = HMM_Vec3(0.0f, 0.0f, -1.0f);
|
||||
|
||||
cam = FollowCam(&target);
|
||||
|
||||
AddChild(&target);
|
||||
AddChild(&cam);
|
||||
}
|
||||
|
||||
void Tick(float deltaSeconds, Input previousInput, Input input) override {
|
||||
double deltaX = input.mouseX - previousInput.mouseX;
|
||||
double deltaY = input.mouseY - previousInput.mouseY;
|
||||
|
||||
// HACK: Pitch is being weird for reasons I don't understand. It works fine for
|
||||
// 360 degrees, then does something silly for 360 degrees, then repeats. I suspect
|
||||
// I'm just doing something wrong with quaternions because I know they encode twice
|
||||
// the angle or whatever. In any case, I've hacked around it for now to splice
|
||||
// together ranges that work.
|
||||
|
||||
yaw = yaw + (-deltaX * sensitivity);
|
||||
pitch = HMM_Clamp(-HMM_PI32 / 2, pitch + (-deltaY * sensitivity), HMM_PI32 / 2);
|
||||
|
||||
// HACK: MEGAHACK: why the heck is the apparent rotation twice what it should be?
|
||||
float hackyPitch = HMM_PI32;
|
||||
if (pitch > 0) {
|
||||
hackyPitch = HMM_PI32 + pitch / 2;
|
||||
} else if (pitch < 0) {
|
||||
hackyPitch = 2 * HMM_PI32 + pitch / 2;
|
||||
}
|
||||
printf("%f\t%f\n", pitch, hackyPitch);
|
||||
|
||||
hmm_quaternion rotationYaw = HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 1.0f, 0.0f), yaw);
|
||||
hmm_quaternion rotationPitch = HMM_QuaternionFromAxisAngle(HMM_Vec3(1.0f, 0.0f, 0.0f), hackyPitch);
|
||||
|
||||
rotation = rotationPitch * rotationYaw;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
71
example/src/FollowCam.h
Normal file
71
example/src/FollowCam.h
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef HMME_FOLLOWCAM_H
|
||||
#define HMME_FOLLOWCAM_H
|
||||
|
||||
#include "Entity.h"
|
||||
#include "HandmadeMath.h"
|
||||
|
||||
#include "debug.h"
|
||||
|
||||
class FollowCam : public Entity {
|
||||
public:
|
||||
Entity *target;
|
||||
|
||||
FollowCam(Entity *t) {
|
||||
target = t;
|
||||
}
|
||||
|
||||
void Tick(float deltaSeconds, Input previousInput, Input input) override {
|
||||
// TODO: Find a way to do this rotation routine in a single quaternion. Maybe that
|
||||
// just means finding a correct method, then doing some quaternion multiplication
|
||||
// on paper to see how the axis and angle shake out.
|
||||
|
||||
rotation = GetLookAtRotation();
|
||||
}
|
||||
|
||||
hmm_quaternion GetLookAtRotation() {
|
||||
hmm_vec3 fwd = (parentModelMatrix * HMM_Vec4(1.0f, 0.0f, 0.0f, 0.0f)).XYZ;
|
||||
hmm_vec3 up = (parentModelMatrix * HMM_Vec4(0.0f, 1.0f, 0.0f, 0.0f)).XYZ;
|
||||
hmm_vec3 to = target->worldPosition() - worldPosition();
|
||||
|
||||
hmm_vec3 pointAxis = HMM_Cross(fwd, to);
|
||||
hmm_quaternion justPointAt;
|
||||
|
||||
// TODO: proper epsilon! and probably implement some kind of nan
|
||||
// protection because a single nan ruins everything.
|
||||
if (HMM_ABS(HMM_Length(pointAxis)) < 0.0001f) {
|
||||
// Already pointing at the thing!
|
||||
justPointAt = HMM_Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
} else {
|
||||
justPointAt = HMM_QuaternionFromAxisAngle(
|
||||
pointAxis,
|
||||
HMM_ACosF(HMM_Dot(HMM_Normalize(fwd), HMM_Normalize(to)))
|
||||
);
|
||||
}
|
||||
|
||||
hmm_vec3 newUp = (HMM_QuaternionToMat4(justPointAt) * HMM_Vec4v(up, 0.0f)).XYZ;
|
||||
hmm_quaternion backUpright = HMM_QuaternionFromAxisAngle(
|
||||
to,
|
||||
// TODO: This angle is not quite right! After this corrective rotation,
|
||||
// the new up vector will *not* necessarily align with world up! So this
|
||||
// will overshoot a little bit.
|
||||
//
|
||||
// You should probably project the world up vector onto the plane of the
|
||||
// to vector before you do the dot product. This is a good opportunity to
|
||||
// add the vector projection stuff that we somehow have left out!
|
||||
-HMM_ACosF(HMM_Dot(HMM_Normalize(newUp), HMM_Vec3(0.0f, 1.0f, 0.0f)))
|
||||
);
|
||||
|
||||
return backUpright * justPointAt;
|
||||
|
||||
// BEN
|
||||
//
|
||||
// YOU MUST ALWAYS REMEMBER THAT QUATERNION MULTIPLICATION IS NOT COMMUTATIVE
|
||||
// AND THAT IT GOES RIGHT TO LEFT
|
||||
//
|
||||
// NEVER FORGET THIS LEST YOU SUFFER THROUGH THIS MESS AGAIN
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
2
example/src/HandmadeMath.cpp
Normal file
2
example/src/HandmadeMath.cpp
Normal file
@@ -0,0 +1,2 @@
|
||||
#define HANDMADE_MATH_IMPLEMENTATION
|
||||
#include <HandmadeMath.h>
|
||||
179
example/src/MeshRenderComponent.h
Normal file
179
example/src/MeshRenderComponent.h
Normal file
@@ -0,0 +1,179 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#ifndef HMME_MESH_RENDER_COMPONENT_H
|
||||
#define HMME_MESH_RENDER_COMPONENT_H
|
||||
|
||||
#include "tiny_obj_loader.h"
|
||||
|
||||
class MeshRenderComponent : public RenderComponent {
|
||||
public:
|
||||
bool didLoad = false;
|
||||
|
||||
struct Shape {
|
||||
GLuint vaoID = 0;
|
||||
GLuint vertexBufferID = 0;
|
||||
GLuint normalBufferID = 0;
|
||||
GLuint uvBufferID = 0;
|
||||
GLuint colorBufferID = 0;
|
||||
int numVerts = 0;
|
||||
};
|
||||
std::vector<Shape> renderShapes;
|
||||
|
||||
MeshRenderComponent(const char *filename) {
|
||||
// Load the model
|
||||
tinyobj::attrib_t attrib;
|
||||
std::vector<tinyobj::shape_t> shapes;
|
||||
std::vector<tinyobj::material_t> materials;
|
||||
|
||||
std::string err;
|
||||
bool ret = tinyobj::LoadObj(&attrib, &shapes, &materials, &err, filename);
|
||||
|
||||
if (!err.empty()) { // `err` may contain warning message.
|
||||
printf("Failed to load mesh: %s\n", err.c_str());
|
||||
}
|
||||
|
||||
if (!ret) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (auto shape : shapes) {
|
||||
std::vector<tinyobj::real_t> vertices;
|
||||
std::vector<tinyobj::real_t> normals;
|
||||
std::vector<tinyobj::real_t> uvs;
|
||||
std::vector<tinyobj::real_t> colors;
|
||||
|
||||
for (auto indices : shape.mesh.indices) {
|
||||
if (indices.vertex_index > -1) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
int attribIndex = 3 * indices.vertex_index + i;
|
||||
vertices.push_back(attrib.vertices[attribIndex]);
|
||||
colors.push_back(attrib.colors[attribIndex]);
|
||||
}
|
||||
}
|
||||
if (indices.normal_index > -1) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
int attribIndex = 3 * indices.normal_index + i;
|
||||
normals.push_back(attrib.normals[attribIndex]);
|
||||
}
|
||||
}
|
||||
if (indices.texcoord_index > -1) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
int attribIndex = 2 * indices.texcoord_index + i;
|
||||
uvs.push_back(attrib.texcoords[attribIndex]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Shape s; // the new shape to insert into our list
|
||||
|
||||
glGenVertexArrays(1, &s.vaoID);
|
||||
|
||||
if (!vertices.empty()) {
|
||||
glGenBuffers(1, &s.vertexBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.vertexBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(tinyobj::real_t) * vertices.size(), &vertices.front(), GL_STATIC_DRAW);
|
||||
|
||||
glGenBuffers(1, &s.colorBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.colorBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(tinyobj::real_t) * colors.size(), &colors.front(), GL_STATIC_DRAW);
|
||||
}
|
||||
|
||||
if (!normals.empty()) {
|
||||
glGenBuffers(1, &s.normalBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.normalBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(tinyobj::real_t) * normals.size(), &normals.front(), GL_STATIC_DRAW);
|
||||
}
|
||||
|
||||
if (!uvs.empty()) {
|
||||
glGenBuffers(1, &s.uvBufferID);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.uvBufferID);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(tinyobj::real_t) * uvs.size(), &uvs.front(), GL_STATIC_DRAW);
|
||||
}
|
||||
|
||||
s.numVerts = vertices.size() / 3;
|
||||
|
||||
renderShapes.push_back(s);
|
||||
}
|
||||
|
||||
didLoad = true;
|
||||
}
|
||||
|
||||
void Draw() override {
|
||||
if (!didLoad) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (auto s : renderShapes) {
|
||||
glBindVertexArray(s.vaoID);
|
||||
|
||||
// 1st attribute buffer : vertices
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.vertexBufferID);
|
||||
glVertexAttribPointer(
|
||||
0, // attribute 0. No particular reason for 0, but must match the layout in the shader.
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// 2nd attribute buffer : colors
|
||||
glEnableVertexAttribArray(1);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.colorBufferID);
|
||||
glVertexAttribPointer(
|
||||
1, // attribute. No particular reason for 1, but must match the layout in the shader.
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
if (s.normalBufferID != 0) {
|
||||
// 3rd attribute buffer : normals
|
||||
glEnableVertexAttribArray(2);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.normalBufferID);
|
||||
glVertexAttribPointer(
|
||||
2, // must match the layout in the shader
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
}
|
||||
|
||||
if (s.uvBufferID != 0) {
|
||||
// 4th attribute buffer : uvs
|
||||
glEnableVertexAttribArray(3);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, s.normalBufferID);
|
||||
glVertexAttribPointer(
|
||||
3, // must match the layout in the shader
|
||||
2, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
}
|
||||
|
||||
// Shader??
|
||||
|
||||
// Draw the triangle!
|
||||
glDrawArrays(GL_TRIANGLES, 0, s.numVerts); // Starting from vertex 0; 3 vertices total -> 1 triangle
|
||||
|
||||
glDisableVertexAttribArray(0);
|
||||
glDisableVertexAttribArray(1);
|
||||
if (s.normalBufferID != 0) {
|
||||
glDisableVertexAttribArray(2);
|
||||
}
|
||||
if (s.uvBufferID != 0) {
|
||||
glDisableVertexAttribArray(3);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
13
example/src/RenderComponent.h
Normal file
13
example/src/RenderComponent.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#include <HandmadeMath.h>
|
||||
|
||||
#ifndef HMME_RENDER_COMPONENT_H
|
||||
#define HMME_RENDER_COMPONENT_H
|
||||
|
||||
#include "Entity.h"
|
||||
|
||||
class RenderComponent {
|
||||
public:
|
||||
virtual void Draw() = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
28
example/src/debug.h
Normal file
28
example/src/debug.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#ifndef DEBUG_H
|
||||
#define DEBUG_H
|
||||
|
||||
#include "HandmadeMath.h"
|
||||
|
||||
void printVec3(hmm_vec3 v) {
|
||||
printf("%f\t%f\t%f\n", v.X, v.Y, v.Z);
|
||||
}
|
||||
|
||||
void printVec4(hmm_vec4 v) {
|
||||
printf("%f\t%f\t%f\t%f\n", v.X, v.Y, v.Z, v.W);
|
||||
}
|
||||
|
||||
void printQuaternion(hmm_quaternion q) {
|
||||
printf("%f\t%f\t%f\t%f\n", q.X, q.Y, q.Z, q.W);
|
||||
}
|
||||
|
||||
void printMat4(hmm_mat4 m) {
|
||||
printf("/\n");
|
||||
for (int r = 0; r < 4; r++) {
|
||||
printf("| %f\t%f\t%f\t%f |\n", m[0][r], m[1][r], m[2][r], m[3][r]);
|
||||
}
|
||||
printf("\\\n");
|
||||
}
|
||||
|
||||
#endif
|
||||
18
example/src/fragment.glsl
Normal file
18
example/src/fragment.glsl
Normal file
@@ -0,0 +1,18 @@
|
||||
#version 330 core
|
||||
|
||||
in vec3 fragmentPosition_world;
|
||||
in vec3 fragmentColor;
|
||||
in vec3 fragmentNormal_world;
|
||||
in vec2 fragmentUV;
|
||||
|
||||
out vec3 color;
|
||||
|
||||
void main() {
|
||||
vec3 ambient = vec3(0.1, 0.1, 0.1);
|
||||
|
||||
vec3 toLight_world = normalize(vec3(1, 1, 1));
|
||||
|
||||
float cosTheta = clamp(dot(normalize(fragmentNormal_world), toLight_world), 0.1, 1);
|
||||
|
||||
color = cosTheta * fragmentColor + ambient;
|
||||
}
|
||||
19
example/src/input.h
Normal file
19
example/src/input.h
Normal file
@@ -0,0 +1,19 @@
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#ifndef HMME_INPUT_H
|
||||
#define HMME_INPUT_H
|
||||
|
||||
struct Input {
|
||||
double mouseX;
|
||||
double mouseY;
|
||||
};
|
||||
|
||||
Input GetInput(GLFWwindow *window) {
|
||||
Input i;
|
||||
|
||||
glfwGetCursorPos(window, &i.mouseX, &i.mouseY);
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
#endif
|
||||
190
example/src/main.cpp
Normal file
190
example/src/main.cpp
Normal file
@@ -0,0 +1,190 @@
|
||||
#include <stdio.h>
|
||||
#include <chrono>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <GL/glew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#include <HandmadeMath.h>
|
||||
|
||||
#include "input.h"
|
||||
#include "shaders.h"
|
||||
|
||||
#include "Entity.h"
|
||||
#include "Cube.h"
|
||||
#include "MeshRenderComponent.h"
|
||||
#include "FPSCam.h"
|
||||
|
||||
void TickTree(Entity *e, float deltaSeconds, Input previousInput, Input input);
|
||||
void ComputeModelMatrices(Entity *ep, hmm_mat4 parentModelMatrix);
|
||||
void HandleMouseMove(GLFWwindow *window, double mouseX, double mouseY);
|
||||
|
||||
using std::chrono::high_resolution_clock;
|
||||
|
||||
#define WIDTH 1024
|
||||
#define HEIGHT 768
|
||||
|
||||
int main() {
|
||||
// Initialise GLFW
|
||||
glewExperimental = true; // Needed for core profile
|
||||
if (!glfwInit()) {
|
||||
fprintf( stderr, "Failed to initialize GLFW\n" );
|
||||
return -1;
|
||||
}
|
||||
|
||||
glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // We want OpenGL 3.3
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // To make MacOS happy; should not be needed
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // We don't want the old OpenGL
|
||||
|
||||
// Open a window and create its OpenGL context
|
||||
GLFWwindow* window; // (In the accompanying source code, this variable is global for simplicity)
|
||||
window = glfwCreateWindow(WIDTH, HEIGHT, "Handmade Math Example", NULL, NULL);
|
||||
if (window == NULL) {
|
||||
fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n" );
|
||||
glfwTerminate();
|
||||
return -1;
|
||||
}
|
||||
glfwMakeContextCurrent(window); // Initialize GLEW
|
||||
glewExperimental=true; // Needed in core profile
|
||||
if (glewInit() != GLEW_OK) {
|
||||
fprintf(stderr, "Failed to initialize GLEW\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Ensure we can capture the escape key being pressed below
|
||||
glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
|
||||
|
||||
// Hide the mouse cursor
|
||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
||||
// glfwSetCursorPos(window, WIDTH / 2, HEIGHT / 2);
|
||||
// glfwSetCursorPosCallback(window, [](GLFWwindow *window, double mouseX, double mouseY) {
|
||||
// printf("%f\t%f\n", mouseX, mouseY);
|
||||
// // glfwSetCursorPos(window, WIDTH / 2, HEIGHT / 2);
|
||||
// });
|
||||
|
||||
// Create and compile our GLSL program from the shaders
|
||||
GLuint programID = LoadShaders("src/vertex.glsl", "src/fragment.glsl");
|
||||
if (!programID) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Get a handle for our "MVP" uniform
|
||||
// Only during the initialisation
|
||||
GLuint uniformID_M = glGetUniformLocation(programID, "M");
|
||||
GLuint uniformID_V = glGetUniformLocation(programID, "V");
|
||||
GLuint uniformID_MVP = glGetUniformLocation(programID, "MVP");
|
||||
|
||||
// Enable depth test
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
// Accept fragment if it closer to the camera than the former one
|
||||
glDepthFunc(GL_LESS);
|
||||
|
||||
Cube c1 = Cube();
|
||||
|
||||
Entity monkey = Entity();
|
||||
monkey.position = HMM_Vec3(2.1f, 0.0f, 0.0f);
|
||||
monkey.renderComponent = new MeshRenderComponent("MonkeySmooth.obj");
|
||||
|
||||
Entity backmonkey = Entity();
|
||||
backmonkey.position = HMM_Vec3(0.0f, 0.0f, 5.0f);
|
||||
backmonkey.renderComponent = new MeshRenderComponent("MonkeySmooth.obj");
|
||||
|
||||
FPSCam fpsCam = FPSCam();
|
||||
fpsCam.position = HMM_Vec3(-1.0f, 1.0f, 3.0f);
|
||||
|
||||
Entity *cam = &fpsCam.cam;
|
||||
|
||||
// Cube c = Cube();
|
||||
// monkey.position = HMM_Vec3(2.1f, 0.0f, 0.0f);
|
||||
|
||||
// monkey.AddChild(&c);
|
||||
|
||||
c1.AddChild(&monkey);
|
||||
|
||||
Entity root = Entity();
|
||||
root.AddChild(&c1);
|
||||
root.AddChild(&fpsCam);
|
||||
root.AddChild(&backmonkey);
|
||||
|
||||
Entity axes = Entity();
|
||||
axes.renderComponent = new MeshRenderComponent("Axes.obj");
|
||||
root.AddChild(&axes);
|
||||
|
||||
bool hasTicked = false;
|
||||
high_resolution_clock::time_point lastTickTime;
|
||||
|
||||
Input previousInput = GetInput(window);
|
||||
|
||||
do {
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
// Get inputs
|
||||
Input input = GetInput(window);
|
||||
|
||||
// Tick
|
||||
auto now = high_resolution_clock::now();
|
||||
if (hasTicked) {
|
||||
auto elapsedNanoseconds = std::chrono::duration_cast<std::chrono::nanoseconds>(now - lastTickTime).count();
|
||||
float elapsedSeconds = elapsedNanoseconds / 1000000000.0f;
|
||||
TickTree(&root, elapsedSeconds, previousInput, input);
|
||||
}
|
||||
lastTickTime = now;
|
||||
hasTicked = true;
|
||||
previousInput = input;
|
||||
|
||||
// Compute model positions for rendering
|
||||
ComputeModelMatrices(&root, HMM_Mat4d(1.0f));
|
||||
|
||||
// Render!
|
||||
hmm_mat4 projection = cam->projectionMatrix();
|
||||
hmm_mat4 view = cam->viewMatrix();
|
||||
hmm_mat4 vp = projection * view;
|
||||
|
||||
auto it = EntityIterator(&root);
|
||||
while (it.HasNext()) {
|
||||
Entity *e = it.Next();
|
||||
|
||||
if (e->renderComponent) {
|
||||
// Use our shader
|
||||
glUseProgram(programID);
|
||||
|
||||
// Send uniforms
|
||||
glUniformMatrix4fv(uniformID_M, 1, GL_FALSE, &e->modelMatrix.Elements[0][0]);
|
||||
|
||||
glUniformMatrix4fv(uniformID_V, 1, GL_FALSE, &view.Elements[0][0]);
|
||||
|
||||
hmm_mat4 mvp = vp * e->modelMatrix;
|
||||
glUniformMatrix4fv(uniformID_MVP, 1, GL_FALSE, &mvp.Elements[0][0]);
|
||||
|
||||
e->renderComponent->Draw();
|
||||
}
|
||||
}
|
||||
|
||||
// Swap buffers
|
||||
glfwSwapBuffers(window);
|
||||
glfwPollEvents();
|
||||
} while (
|
||||
// Check if the ESC key was pressed or the window was closed
|
||||
glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS
|
||||
&& glfwWindowShouldClose(window) == 0
|
||||
);
|
||||
}
|
||||
|
||||
void TickTree(Entity *e, float deltaSeconds, Input previousInput, Input input) {
|
||||
e->Tick(deltaSeconds, previousInput, input);
|
||||
|
||||
for (auto child : e->children) {
|
||||
TickTree(child, deltaSeconds, previousInput, input);
|
||||
}
|
||||
}
|
||||
|
||||
void ComputeModelMatrices(Entity *e, hmm_mat4 parentModelMatrix) {
|
||||
e->parentModelMatrix = parentModelMatrix;
|
||||
e->modelMatrix = parentModelMatrix * HMM_Translate(e->position) * HMM_QuaternionToMat4(e->rotation) * HMM_Scale(e->scale);
|
||||
|
||||
for (int i = 0; i < e->children.size(); i++) {
|
||||
ComputeModelMatrices(e->children[i], e->modelMatrix);
|
||||
}
|
||||
}
|
||||
94
example/src/shaders.cpp
Normal file
94
example/src/shaders.cpp
Normal file
@@ -0,0 +1,94 @@
|
||||
#include <stdio.h>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
||||
#include "shaders.h"
|
||||
|
||||
GLuint LoadShaders(const char * vertex_file_path, const char * fragment_file_path) {
|
||||
// Create the shaders
|
||||
GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
||||
GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
|
||||
// Read the Vertex Shader code from the file
|
||||
std::string VertexShaderCode;
|
||||
std::ifstream VertexShaderStream(vertex_file_path, std::ios::in);
|
||||
if(VertexShaderStream.is_open()){
|
||||
std::stringstream sstr;
|
||||
sstr << VertexShaderStream.rdbuf();
|
||||
VertexShaderCode = sstr.str();
|
||||
VertexShaderStream.close();
|
||||
}else{
|
||||
printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Read the Fragment Shader code from the file
|
||||
std::string FragmentShaderCode;
|
||||
std::ifstream FragmentShaderStream(fragment_file_path, std::ios::in);
|
||||
if(FragmentShaderStream.is_open()){
|
||||
std::stringstream sstr;
|
||||
sstr << FragmentShaderStream.rdbuf();
|
||||
FragmentShaderCode = sstr.str();
|
||||
FragmentShaderStream.close();
|
||||
}
|
||||
|
||||
GLint Result = GL_FALSE;
|
||||
int InfoLogLength;
|
||||
|
||||
// Compile Vertex Shader
|
||||
printf("Compiling shader : %s\n", vertex_file_path);
|
||||
char const * VertexSourcePointer = VertexShaderCode.c_str();
|
||||
glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL);
|
||||
glCompileShader(VertexShaderID);
|
||||
|
||||
// Check Vertex Shader
|
||||
glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result);
|
||||
glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||
if ( InfoLogLength > 0 ){
|
||||
std::vector<char> VertexShaderErrorMessage(InfoLogLength+1);
|
||||
glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]);
|
||||
printf("%s\n", &VertexShaderErrorMessage[0]);
|
||||
}
|
||||
|
||||
// Compile Fragment Shader
|
||||
printf("Compiling shader : %s\n", fragment_file_path);
|
||||
char const * FragmentSourcePointer = FragmentShaderCode.c_str();
|
||||
glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer , NULL);
|
||||
glCompileShader(FragmentShaderID);
|
||||
|
||||
// Check Fragment Shader
|
||||
glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result);
|
||||
glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||
if ( InfoLogLength > 0 ){
|
||||
std::vector<char> FragmentShaderErrorMessage(InfoLogLength+1);
|
||||
glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]);
|
||||
printf("%s\n", &FragmentShaderErrorMessage[0]);
|
||||
}
|
||||
|
||||
// Link the program
|
||||
printf("Linking program\n");
|
||||
GLuint ProgramID = glCreateProgram();
|
||||
glAttachShader(ProgramID, VertexShaderID);
|
||||
glAttachShader(ProgramID, FragmentShaderID);
|
||||
glLinkProgram(ProgramID);
|
||||
|
||||
// Check the program
|
||||
glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result);
|
||||
glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength);
|
||||
if ( InfoLogLength > 0 ){
|
||||
std::vector<char> ProgramErrorMessage(InfoLogLength+1);
|
||||
glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]);
|
||||
printf("%s\n", &ProgramErrorMessage[0]);
|
||||
}
|
||||
|
||||
glDetachShader(ProgramID, VertexShaderID);
|
||||
glDetachShader(ProgramID, FragmentShaderID);
|
||||
|
||||
glDeleteShader(VertexShaderID);
|
||||
glDeleteShader(FragmentShaderID);
|
||||
|
||||
return ProgramID;
|
||||
}
|
||||
9
example/src/shaders.h
Normal file
9
example/src/shaders.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <GL/glew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
#ifndef HMME_SHADERS_H
|
||||
#define HMME_SHADERS_H
|
||||
|
||||
GLuint LoadShaders(const char * vertex_file_path, const char * fragment_file_path);
|
||||
|
||||
#endif
|
||||
2
example/src/tiny_obj_loader.cpp
Normal file
2
example/src/tiny_obj_loader.cpp
Normal file
@@ -0,0 +1,2 @@
|
||||
#define TINYOBJLOADER_IMPLEMENTATION
|
||||
#include "tiny_obj_loader.h"
|
||||
2338
example/src/tiny_obj_loader.h
Normal file
2338
example/src/tiny_obj_loader.h
Normal file
File diff suppressed because it is too large
Load Diff
28
example/src/vertex.glsl
Normal file
28
example/src/vertex.glsl
Normal file
@@ -0,0 +1,28 @@
|
||||
#version 330 core
|
||||
|
||||
// These match the values in glVertexAttribPointer
|
||||
layout(location = 0) in vec3 vertexPosition_model;
|
||||
layout(location = 1) in vec3 vertexColor;
|
||||
layout(location = 2) in vec3 vertexNormal_model;
|
||||
layout(location = 3) in vec2 vertexUV;
|
||||
|
||||
uniform mat4 M;
|
||||
uniform mat4 V;
|
||||
uniform mat4 MVP;
|
||||
|
||||
out vec3 fragmentPosition_world;
|
||||
out vec3 fragmentColor;
|
||||
out vec3 fragmentNormal_world;
|
||||
out vec2 fragmentUV;
|
||||
|
||||
void main(){
|
||||
// Output position of the vertex, in clip space : MVP * position
|
||||
gl_Position = MVP * vec4(vertexPosition_model, 1);
|
||||
fragmentPosition_world = (M * vec4(vertexPosition_model, 1)).xyz;
|
||||
|
||||
fragmentColor = vertexColor;
|
||||
|
||||
fragmentNormal_world = (M * vec4(vertexNormal_model, 0)).xyz;
|
||||
|
||||
fragmentUV = vertexUV;
|
||||
}
|
||||
@@ -1,2 +1,3 @@
|
||||
#define HANDMADE_MATH_IMPLEMENTATION
|
||||
#define HANDMADE_MATH_NO_INLINE
|
||||
#include "../HandmadeMath.h"
|
||||
|
||||
@@ -1,104 +1,263 @@
|
||||
/*
|
||||
HandmadeTest.h
|
||||
|
||||
This is Handmade Math's test framework. It is fully compatible with both C
|
||||
and C++, although it requires some compiler-specific features.
|
||||
|
||||
The basic way of creating a test is using the TEST macro, which registers a
|
||||
single test to be run:
|
||||
|
||||
TEST(MyCategory, MyTestName) {
|
||||
// test code, including asserts/expects
|
||||
}
|
||||
|
||||
The main function of your test code should then call hmt_run_all_tests and
|
||||
return the result:
|
||||
|
||||
int main() {
|
||||
return hmt_run_all_tests();
|
||||
}
|
||||
|
||||
=============================================================================
|
||||
|
||||
If Handmade Test's macros are conflicting with existing macros in your
|
||||
project, you may define HMT_SAFE_MACROS before you include HandmadeTest.h.
|
||||
You may then prefix each macro with HMT_. For example, you may use HMT_TEST
|
||||
instead of TEST and HMT_EXPECT_TRUE instead of EXPECT_TRUE.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef HANDMADETEST_H
|
||||
#define HANDMADETEST_H
|
||||
|
||||
#include <float.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int hmt_count_tests = 0;
|
||||
int hmt_count_failedtests = 0;
|
||||
int hmt_count_failures = 0;
|
||||
#include "initializer.h"
|
||||
|
||||
#define RESET "\033[0m"
|
||||
#define RED "\033[31m"
|
||||
#define GREEN "\033[32m"
|
||||
#define HMT_RESET "\033[0m"
|
||||
#define HMT_RED "\033[31m"
|
||||
#define HMT_GREEN "\033[32m"
|
||||
|
||||
#define CATEGORY_BEGIN(name) { \
|
||||
int count_categorytests = 0; \
|
||||
int count_categoryfailedtests = 0; \
|
||||
int count_categoryfailures = 0; \
|
||||
printf("\n" #name ":\n");
|
||||
#define CATEGORY_END(name) \
|
||||
hmt_count_tests += count_categorytests; \
|
||||
hmt_count_failedtests += count_categoryfailedtests; \
|
||||
hmt_count_failures += count_categoryfailures; \
|
||||
printf("%d/%d tests passed, %d failures\n", count_categorytests - count_categoryfailedtests, count_categorytests, count_categoryfailures); \
|
||||
#define HMT_INITIAL_ARRAY_SIZE 1024
|
||||
|
||||
typedef struct hmt_testresult_struct {
|
||||
int count_cases;
|
||||
int count_failures;
|
||||
} hmt_testresult;
|
||||
|
||||
typedef void (*hmt_test_func)(hmt_testresult*);
|
||||
|
||||
typedef struct hmt_test_struct {
|
||||
const char* name;
|
||||
hmt_test_func func;
|
||||
} hmt_test;
|
||||
|
||||
typedef struct hmt_category_struct {
|
||||
const char* name;
|
||||
int num_tests;
|
||||
int tests_capacity;
|
||||
hmt_test* tests;
|
||||
} hmt_category;
|
||||
|
||||
int hmt_num_categories = 0;
|
||||
int hmt_category_capacity = HMT_INITIAL_ARRAY_SIZE;
|
||||
hmt_category* categories = 0;
|
||||
|
||||
hmt_category _hmt_new_category(const char* name) {
|
||||
hmt_category cat = {
|
||||
.name = name,
|
||||
.num_tests = 0,
|
||||
.tests_capacity = HMT_INITIAL_ARRAY_SIZE,
|
||||
.tests = (hmt_test*) malloc(HMT_INITIAL_ARRAY_SIZE * sizeof(hmt_test))
|
||||
};
|
||||
|
||||
return cat;
|
||||
}
|
||||
|
||||
#define TEST_BEGIN(name) { \
|
||||
int count_testcases = 0, count_testfailures = 0; \
|
||||
count_categorytests++; \
|
||||
printf(" " #name ":");
|
||||
#define TEST_END() \
|
||||
count_categoryfailures += count_testfailures; \
|
||||
if (count_testfailures > 0) { \
|
||||
count_categoryfailedtests++; \
|
||||
printf("\n " RED "(%d/%d passed)" RESET, count_testcases - count_testfailures, count_testcases); \
|
||||
printf("\n"); \
|
||||
} else { \
|
||||
printf(GREEN " [PASS] (%d/%d passed) \n" RESET, count_testcases - count_testfailures, count_testcases); \
|
||||
} \
|
||||
hmt_test _hmt_new_test(const char* name, hmt_test_func func) {
|
||||
hmt_test test = {
|
||||
.name = name,
|
||||
.func = func
|
||||
};
|
||||
|
||||
return test;
|
||||
}
|
||||
|
||||
#define CASE_START() \
|
||||
count_testcases++;
|
||||
int hmt_register_test(const char* category, const char* name, hmt_test_func func) {
|
||||
// initialize categories array if not initialized
|
||||
if (!categories) {
|
||||
categories = (hmt_category*) malloc(hmt_category_capacity * sizeof(hmt_category));
|
||||
}
|
||||
|
||||
#define CASE_FAIL() \
|
||||
count_testfailures++; \
|
||||
printf("\n - " RED "[FAIL] (%d) " RESET, __LINE__);
|
||||
// Find the matching category, if possible
|
||||
int cat_index;
|
||||
for (cat_index = 0; cat_index < hmt_num_categories; cat_index++) {
|
||||
if (strcmp(categories[cat_index].name, category) == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Expand the array of categories if necessary
|
||||
if (cat_index >= hmt_category_capacity) {
|
||||
// TODO: If/when we ever split HandmadeTest off into its own package,
|
||||
// we should start with a smaller initial capacity and dynamically expand.
|
||||
}
|
||||
|
||||
// Add a new category if necessary
|
||||
if (cat_index >= hmt_num_categories) {
|
||||
categories[cat_index] = _hmt_new_category(category);
|
||||
hmt_num_categories++;
|
||||
}
|
||||
|
||||
hmt_category* cat = &categories[cat_index];
|
||||
|
||||
// Add the test to the category
|
||||
if (cat->num_tests >= cat->tests_capacity) {
|
||||
// TODO: If/when we ever split HandmadeTest off into its own package,
|
||||
// we should start with a smaller initial capacity and dynamically expand.
|
||||
}
|
||||
cat->tests[cat->num_tests] = _hmt_new_test(name, func);
|
||||
cat->num_tests++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int hmt_run_all_tests() {
|
||||
int count_alltests = 0;
|
||||
int count_allfailedtests = 0; // failed test cases
|
||||
int count_allfailures = 0; // failed asserts
|
||||
|
||||
for (int i = 0; i < hmt_num_categories; i++) {
|
||||
hmt_category cat = categories[i];
|
||||
int count_catfailedtests = 0;
|
||||
int count_catfailures = 0;
|
||||
|
||||
printf("\n%s:\n", cat.name);
|
||||
|
||||
for (int j = 0; j < cat.num_tests; j++) {
|
||||
hmt_test test = cat.tests[j];
|
||||
|
||||
printf(" %s:", test.name);
|
||||
|
||||
hmt_testresult result = {
|
||||
.count_cases = 0,
|
||||
.count_failures = 0
|
||||
};
|
||||
test.func(&result);
|
||||
|
||||
count_catfailures += result.count_failures;
|
||||
|
||||
if (result.count_failures > 0) {
|
||||
count_catfailedtests++;
|
||||
printf("\n " HMT_RED "(%d/%d passed)" HMT_RESET, result.count_cases - result.count_failures, result.count_cases);
|
||||
printf("\n");
|
||||
} else {
|
||||
printf(HMT_GREEN " [PASS] (%d/%d passed) \n" HMT_RESET, result.count_cases - result.count_failures, result.count_cases);
|
||||
}
|
||||
}
|
||||
|
||||
count_alltests += cat.num_tests;
|
||||
count_allfailedtests += count_catfailedtests;
|
||||
count_allfailures += count_catfailures;
|
||||
|
||||
printf("%d/%d tests passed, %d failures\n", cat.num_tests - count_catfailedtests, cat.num_tests, count_catfailures);
|
||||
}
|
||||
|
||||
if (count_allfailedtests > 0) {
|
||||
printf(HMT_RED);
|
||||
} else {
|
||||
printf(HMT_GREEN);
|
||||
}
|
||||
printf("\n%d/%d tests passed overall, %d failures\n" HMT_RESET, count_alltests - count_allfailedtests, count_alltests, count_allfailures);
|
||||
|
||||
printf("\n");
|
||||
|
||||
return (count_allfailedtests > 0);
|
||||
}
|
||||
|
||||
#define _HMT_TEST_FUNCNAME(category, name) category ## _ ## name
|
||||
#define _HMT_TEST_FUNCNAME_INIT(category, name) category ## _ ## name ## _init
|
||||
|
||||
#define HMT_TEST(category, name) \
|
||||
void _HMT_TEST_FUNCNAME(category, name)(hmt_testresult* _result); \
|
||||
INITIALIZER(_HMT_TEST_FUNCNAME_INIT(category, name)) { \
|
||||
hmt_register_test(#category, #name, _HMT_TEST_FUNCNAME(category, name)); \
|
||||
} \
|
||||
void _HMT_TEST_FUNCNAME(category, name)(hmt_testresult* _result)
|
||||
|
||||
#define _HMT_CASE_START() \
|
||||
_result->count_cases++;
|
||||
|
||||
#define _HMT_CASE_FAIL() \
|
||||
_result->count_failures++; \
|
||||
printf("\n - " HMT_RED "[FAIL] (%d) " HMT_RESET, __LINE__);
|
||||
|
||||
/*
|
||||
* Asserts and expects
|
||||
*/
|
||||
#define EXPECT_TRUE(_actual) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_TRUE(_actual) do { \
|
||||
_HMT_CASE_START(); \
|
||||
if (!(_actual)) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected true but got something false"); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define EXPECT_FALSE(_actual) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_FALSE(_actual) do { \
|
||||
_HMT_CASE_START(); \
|
||||
if (_actual) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected false but got something true"); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define EXPECT_FLOAT_EQ(_actual, _expected) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_FLOAT_EQ(_actual, _expected) do { \
|
||||
_HMT_CASE_START(); \
|
||||
float actual = (_actual); \
|
||||
float diff = actual - (_expected); \
|
||||
if (diff < -FLT_EPSILON || FLT_EPSILON < diff) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected %f, got %f", (_expected), actual); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define EXPECT_NEAR(_actual, _expected, _epsilon) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_NEAR(_actual, _expected, _epsilon) do { \
|
||||
_HMT_CASE_START(); \
|
||||
float actual = (_actual); \
|
||||
float diff = actual - (_expected); \
|
||||
if (diff < -(_epsilon) || (_epsilon) < diff) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected %f, got %f", (_expected), actual); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define EXPECT_LT(_actual, _expected) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_LT(_actual, _expected) do { \
|
||||
_HMT_CASE_START(); \
|
||||
if ((_actual) >= (_expected)) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected %f to be less than %f", (_actual), (_expected)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define EXPECT_GT(_actual, _expected) do { \
|
||||
CASE_START(); \
|
||||
#define HMT_EXPECT_GT(_actual, _expected) do { \
|
||||
_HMT_CASE_START(); \
|
||||
if ((_actual) <= (_expected)) { \
|
||||
CASE_FAIL(); \
|
||||
_HMT_CASE_FAIL(); \
|
||||
printf("Expected %f to be greater than %f", (_actual), (_expected)); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
#ifndef HMT_SAFE_MACROS
|
||||
// Friendly defines
|
||||
#define TEST(category, name) HMT_TEST(category, name)
|
||||
#define EXPECT_TRUE(_actual) HMT_EXPECT_TRUE(_actual)
|
||||
#define EXPECT_FALSE(_actual) HMT_EXPECT_FALSE(_actual)
|
||||
#define EXPECT_FLOAT_EQ(_actual, _expected) HMT_EXPECT_FLOAT_EQ(_actual, _expected)
|
||||
#define EXPECT_NEAR(_actual, _expected, _epsilon) HMT_EXPECT_NEAR(_actual, _expected, _epsilon)
|
||||
#define EXPECT_LT(_actual, _expected) HMT_EXPECT_LT(_actual, _expected)
|
||||
#define EXPECT_GT(_actual, _expected) HMT_EXPECT_GT(_actual, _expected)
|
||||
#endif // HMT_SAFE_MACROS
|
||||
|
||||
#endif // HANDMADETEST_H
|
||||
|
||||
@@ -1,48 +1,45 @@
|
||||
ROOT_DIR=..
|
||||
BUILD_DIR=build
|
||||
|
||||
CXXFLAGS+=-g -Wall -Wextra -pthread -Wno-missing-braces -Wno-missing-field-initializers
|
||||
|
||||
all: c c_no_sse cpp cpp_no_sse
|
||||
|
||||
clean:
|
||||
rm -f hmm_test_c hmm_test_cpp hmm_test_c_no_sse hmm_test_cpp_no_sse *.o
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
c: $(ROOT_DIR)/test/HandmadeMath.c test_impl
|
||||
c: HandmadeMath.c test_impl
|
||||
@echo "\nCompiling in C mode"
|
||||
$(CC) $(CPPFLAGS) $(CXXFLAGS) -std=c99 \
|
||||
-c $(ROOT_DIR)/test/HandmadeMath.c $(ROOT_DIR)/test/hmm_test.c \
|
||||
-lm
|
||||
$(CC) -ohmm_test_c HandmadeMath.o hmm_test.o -lm
|
||||
mkdir -p $(BUILD_DIR)
|
||||
cd $(BUILD_DIR)\
|
||||
&& $(CC) $(CPPFLAGS) $(CXXFLAGS) -std=c99 \
|
||||
-c ../HandmadeMath.c ../hmm_test.c \
|
||||
-lm \
|
||||
&& $(CC) -ohmm_test_c HandmadeMath.o hmm_test.o -lm
|
||||
|
||||
c_no_sse: $(ROOT_DIR)/test/HandmadeMath.c test_impl
|
||||
c_no_sse: HandmadeMath.c test_impl
|
||||
@echo "\nCompiling in C mode (no SSE)"
|
||||
$(CC) $(CPPFLAGS) $(CXXFLAGS) -std=c99 \
|
||||
-DHANDMADE_MATH_NO_SSE \
|
||||
-c $(ROOT_DIR)/test/HandmadeMath.c $(ROOT_DIR)/test/hmm_test.c \
|
||||
-lm
|
||||
$(CC) -ohmm_test_c_no_sse HandmadeMath.o hmm_test.o -lm
|
||||
mkdir -p $(BUILD_DIR)
|
||||
cd $(BUILD_DIR) \
|
||||
&& $(CC) $(CPPFLAGS) $(CXXFLAGS) -std=c99 \
|
||||
-DHANDMADE_MATH_NO_SSE \
|
||||
-c ../HandmadeMath.c ../hmm_test.c \
|
||||
-lm \
|
||||
&& $(CC) -ohmm_test_c_no_sse HandmadeMath.o hmm_test.o -lm
|
||||
|
||||
cpp: $(ROOT_DIR)/test/HandmadeMath.cpp test_impl
|
||||
cpp: HandmadeMath.cpp test_impl
|
||||
@echo "\nCompiling in C++ mode"
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp \
|
||||
-DHANDMADE_MATH_CPP_MODE \
|
||||
$(ROOT_DIR)/test/HandmadeMath.cpp $(ROOT_DIR)/test/hmm_test.cpp
|
||||
mkdir -p $(BUILD_DIR)
|
||||
cd $(BUILD_DIR) \
|
||||
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp \
|
||||
-DHANDMADE_MATH_CPP_MODE \
|
||||
../HandmadeMath.cpp ../hmm_test.cpp
|
||||
|
||||
cpp_no_sse: $(ROOT_DIR)/test/HandmadeMath.cpp test_impl
|
||||
cpp_no_sse: HandmadeMath.cpp test_impl
|
||||
@echo "\nCompiling in C++ mode (no SSE)"
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp_no_sse \
|
||||
-DHANDMADE_MATH_CPP_MODE -DHANDMADE_MATH_NO_SSE \
|
||||
$(ROOT_DIR)/test/HandmadeMath.cpp $(ROOT_DIR)/test/hmm_test.cpp
|
||||
mkdir -p $(BUILD_DIR)
|
||||
cd $(BUILD_DIR) \
|
||||
&& $(CXX) $(CPPFLAGS) $(CXXFLAGS) -ohmm_test_cpp_no_sse \
|
||||
-DHANDMADE_MATH_CPP_MODE -DHANDMADE_MATH_NO_SSE \
|
||||
../HandmadeMath.cpp ../hmm_test.cpp
|
||||
|
||||
test_impl: $(ROOT_DIR)/test/hmm_test.cpp $(ROOT_DIR)/test/hmm_test.c
|
||||
|
||||
benchmark_c: $(ROOT_DIR)/test/benchmark.c
|
||||
$(CC) $(CPPFLAGS) $(CXXFLAGS) -std=c99 -D_POSIX_C_SOURCE=199309L \
|
||||
-c $(ROOT_DIR)/test/benchmark.c \
|
||||
-lm
|
||||
$(CC) -obenchmark_c benchmark.o -lm
|
||||
|
||||
benchmark_cpp: $(ROOT_DIR)/test/benchmark.cpp
|
||||
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -obenchmark_cpp -O3 \
|
||||
-DHANDMADE_MATH_CPP_MODE \
|
||||
$(ROOT_DIR)/test/benchmark.cpp
|
||||
test_impl: hmm_test.cpp hmm_test.c
|
||||
|
||||
@@ -4,8 +4,8 @@ You can compile and run the tests yourself by running:
|
||||
|
||||
```
|
||||
make
|
||||
./hmm_test_c
|
||||
./hmm_test_c_no_sse
|
||||
./hmm_test_cpp
|
||||
./hmm_test_cpp_no_sse
|
||||
build/hmm_test_c
|
||||
build/hmm_test_c_no_sse
|
||||
build/hmm_test_cpp
|
||||
build/hmm_test_cpp_no_sse
|
||||
```
|
||||
|
||||
@@ -1,83 +0,0 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define HANDMADE_MATH_IMPLEMENTATION
|
||||
#define HANDMADE_MATH_NO_SSE
|
||||
#include "../HandmadeMath.h"
|
||||
|
||||
#define BILLION 1000000000L
|
||||
|
||||
#define NUM_CASES 5
|
||||
|
||||
long benchmark_vec4_add()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
hmm_vec4 a = HMM_Vec4(rand(), rand(), rand(), rand());
|
||||
hmm_vec4 b = HMM_Vec4(rand(), rand(), rand(), rand());
|
||||
|
||||
hmm_vec4 result = HMM_AddVec4(a, b);
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_matrix_transpose()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
hmm_mat4 a;
|
||||
for (int column = 0; column < 4; column++) {
|
||||
for (int row = 0; row < 4; row++) {
|
||||
a.Elements[column][row] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
hmm_mat4 result = HMM_Transpose(a);
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_vec4_add();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
int main2()
|
||||
{
|
||||
printf("Sleeping for 10 seconds...\n");
|
||||
sleep(10);
|
||||
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_matrix_transpose();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "glm/glm/glm.hpp"
|
||||
|
||||
#define HANDMADE_MATH_IMPLEMENTATION
|
||||
// #define HANDMADE_MATH_NO_SSE
|
||||
#include "../HandmadeMath.h"
|
||||
|
||||
#define BILLION 1000000000L
|
||||
|
||||
#define NUM_CASES 5
|
||||
|
||||
long benchmark_vec4_add()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
hmm_vec4 a = HMM_Vec4(rand(), rand(), rand(), rand());
|
||||
hmm_vec4 b = HMM_Vec4(rand(), rand(), rand(), rand());
|
||||
|
||||
hmm_vec4 result = HMM_AddVec4(a, b);
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_vec4_add_glm()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
glm::vec4 a(rand(), rand(), rand(), rand());
|
||||
glm::vec4 b(rand(), rand(), rand(), rand());
|
||||
|
||||
glm::vec4 result = a + b;
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_matrix_transpose()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
hmm_mat4 a;
|
||||
for (int column = 0; column < 4; column++) {
|
||||
for (int row = 0; row < 4; row++) {
|
||||
a.Elements[column][row] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
hmm_mat4 result = HMM_Transpose(a);
|
||||
// hmm_mat4 result = a;
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_matrix_transpose_glm()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
glm::mat4 a;
|
||||
for (int column = 0; column < 4; column++) {
|
||||
for (int row = 0; row < 4; row++) {
|
||||
a[column][row] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
glm::mat4 result = glm::transpose(a);
|
||||
// glm::mat4 result = a;
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_matrix_multiply()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
hmm_mat4 a, b;
|
||||
for (int column = 0; column < 4; column++) {
|
||||
for (int row = 0; row < 4; row++) {
|
||||
a.Elements[column][row] = rand();
|
||||
b.Elements[column][row] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
hmm_mat4 result = HMM_MultiplyMat4(a, b);
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
// clock_gettime(CLOCK_MONOTONIC_RAW, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
long benchmark_matrix_multiply_glm()
|
||||
{
|
||||
struct timespec start, end;
|
||||
|
||||
srand(1);
|
||||
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
|
||||
for (int i = 0; i < 100000000; i++) {
|
||||
glm::mat4 a, b;
|
||||
for (int column = 0; column < 4; column++) {
|
||||
for (int row = 0; row < 4; row++) {
|
||||
a[column][row] = rand();
|
||||
b[column][row] = rand();
|
||||
}
|
||||
}
|
||||
|
||||
glm::mat4 result = a * b;
|
||||
}
|
||||
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end);
|
||||
|
||||
return BILLION * (end.tv_sec - start.tv_sec) + end.tv_nsec - start.tv_nsec;
|
||||
}
|
||||
|
||||
int main_add_hmm()
|
||||
// int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_vec4_add();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
int main_add_glm()
|
||||
// int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_vec4_add_glm();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
int main_transpose_hmm()
|
||||
// int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_matrix_transpose();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
int main_transpose_glm()
|
||||
// int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_matrix_transpose_glm();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
// int main_multiply_hmm()
|
||||
int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_matrix_multiply();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
|
||||
int main_multiply_glm()
|
||||
// int main()
|
||||
{
|
||||
long total = 0;
|
||||
for (int i = 0; i < NUM_CASES; i++) {
|
||||
long result = benchmark_matrix_multiply_glm();
|
||||
total += result;
|
||||
|
||||
printf("DURATION: %ld (%f seconds)\n", result, result / (float) BILLION);
|
||||
}
|
||||
|
||||
printf("AVERAGE: %ld (%f seconds)\n", total / NUM_CASES, total / (float) NUM_CASES / BILLION);
|
||||
}
|
||||
209
test/categories/Addition.h
Normal file
209
test/categories/Addition.h
Normal file
@@ -0,0 +1,209 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Addition, Vec2)
|
||||
{
|
||||
hmm_vec2 v2_1 = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 v2_2 = HMM_Vec2(3.0f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_AddVec2(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Add(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2_1 + v2_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
|
||||
v2_1 += v2_2;
|
||||
EXPECT_FLOAT_EQ(v2_1.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v2_1.Y, 6.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Addition, Vec3)
|
||||
{
|
||||
hmm_vec3 v3_1 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v3_2 = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_AddVec3(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Add(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3_1 + v3_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
|
||||
v3_1 += v3_2;
|
||||
EXPECT_FLOAT_EQ(v3_1.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Y, 7.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Z, 9.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Addition, Vec4)
|
||||
{
|
||||
hmm_vec4 v4_1 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 v4_2 = HMM_Vec4(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_AddVec4(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Add(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4_1 + v4_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
|
||||
v4_1 += v4_2;
|
||||
EXPECT_FLOAT_EQ(v4_1.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.W, 12.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Addition, Mat4)
|
||||
{
|
||||
hmm_mat4 m4_1 = HMM_Mat4(); // will have 1 - 16
|
||||
hmm_mat4 m4_2 = HMM_Mat4(); // will have 17 - 32
|
||||
|
||||
// Fill the matrices
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_1.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_2.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_mat4 result = HMM_AddMat4(m4_1, m4_2);
|
||||
float Expected = 18.0f;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], Expected);
|
||||
Expected += 2.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_mat4 result = HMM_Add(m4_1, m4_2);
|
||||
float Expected = 18.0f;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], Expected);
|
||||
Expected += 2.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = m4_1 + m4_2;
|
||||
float Expected = 18.0f;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], Expected);
|
||||
Expected += 2.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m4_1 += m4_2;
|
||||
float Expected = 18.0f;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(m4_1.Elements[Column][Row], Expected);
|
||||
Expected += 2.0f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Addition, Quaternion)
|
||||
{
|
||||
hmm_quaternion q1 = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion q2 = HMM_Quaternion(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_AddQuaternion(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Add(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = q1 + q2;
|
||||
EXPECT_FLOAT_EQ(result.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
|
||||
q1 += q2;
|
||||
EXPECT_FLOAT_EQ(q1.X, 6.0f);
|
||||
EXPECT_FLOAT_EQ(q1.Y, 8.0f);
|
||||
EXPECT_FLOAT_EQ(q1.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(q1.W, 12.0f);
|
||||
#endif
|
||||
}
|
||||
325
test/categories/Division.h
Normal file
325
test/categories/Division.h
Normal file
@@ -0,0 +1,325 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Division, Vec2Vec2)
|
||||
{
|
||||
hmm_vec2 v2_1 = HMM_Vec2(1.0f, 3.0f);
|
||||
hmm_vec2 v2_2 = HMM_Vec2(2.0f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_DivideVec2(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Divide(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2_1 / v2_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
}
|
||||
|
||||
v2_1 /= v2_2;
|
||||
EXPECT_FLOAT_EQ(v2_1.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v2_1.Y, 0.75f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Vec2Scalar)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, 2.0f);
|
||||
float s = 2;
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_DivideVec2f(v2, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Divide(v2, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2 / s;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
}
|
||||
|
||||
v2 /= s;
|
||||
EXPECT_FLOAT_EQ(v2.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v2.Y, 1.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Vec3Vec3)
|
||||
{
|
||||
hmm_vec3 v3_1 = HMM_Vec3(1.0f, 3.0f, 5.0f);
|
||||
hmm_vec3 v3_2 = HMM_Vec3(2.0f, 4.0f, 0.5f);
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_DivideVec3(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Divide(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3_1 / v3_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
}
|
||||
|
||||
v3_1 /= v3_2;
|
||||
EXPECT_FLOAT_EQ(v3_1.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Z, 10.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Vec3Scalar)
|
||||
{
|
||||
hmm_vec3 v3 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
float s = 2;
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_DivideVec3f(v3, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Divide(v3, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3 / s;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
}
|
||||
|
||||
v3 /= s;
|
||||
EXPECT_FLOAT_EQ(v3.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v3.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Z, 1.5f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Vec4Vec4)
|
||||
{
|
||||
hmm_vec4 v4_1 = HMM_Vec4(1.0f, 3.0f, 5.0f, 1.0f);
|
||||
hmm_vec4 v4_2 = HMM_Vec4(2.0f, 4.0f, 0.5f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_DivideVec4(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.25f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Divide(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.25f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4_1 / v4_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.25f);
|
||||
}
|
||||
|
||||
v4_1 /= v4_2;
|
||||
EXPECT_FLOAT_EQ(v4_1.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Y, 0.75f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Z, 10.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.W, 0.25f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Vec4Scalar)
|
||||
{
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
float s = 2;
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_DivideVec4f(v4, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Divide(v4, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4 / s;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
|
||||
v4 /= s;
|
||||
EXPECT_FLOAT_EQ(v4.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(v4.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(v4.W, 2.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, Mat4Scalar)
|
||||
{
|
||||
hmm_mat4 m4 = HMM_Mat4(); // will have 1 - 16
|
||||
float s = 2;
|
||||
|
||||
// Fill the matrix
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_mat4 result = HMM_DivideMat4f(m4, s);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 2.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 3.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 4.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 5.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 6.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 7.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 8.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_mat4 result = HMM_Divide(m4, s);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 2.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 3.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 4.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 5.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 6.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 7.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 8.0f);
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = m4 / s;
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 2.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 3.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 4.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 5.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 6.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 7.5f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 8.0f);
|
||||
}
|
||||
|
||||
m4 /= s;
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][0], 0.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][1], 1.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][2], 1.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][3], 2.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][0], 2.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][2], 3.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][3], 4.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][0], 4.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][1], 5.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][2], 5.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][3], 6.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][0], 6.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][1], 7.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][2], 7.5f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][3], 8.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Division, QuaternionScalar)
|
||||
{
|
||||
hmm_quaternion q = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
float f = 2.0f;
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_DivideQuaternionF(q, f);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Divide(q, f);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = q / f;
|
||||
EXPECT_FLOAT_EQ(result.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(result.W, 2.0f);
|
||||
}
|
||||
|
||||
q /= f;
|
||||
EXPECT_FLOAT_EQ(q.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(q.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(q.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(q.W, 2.0f);
|
||||
#endif
|
||||
}
|
||||
55
test/categories/Equality.h
Normal file
55
test/categories/Equality.h
Normal file
@@ -0,0 +1,55 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Equality, Vec2)
|
||||
{
|
||||
hmm_vec2 a = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 b = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 c = HMM_Vec2(3.0f, 4.0f);
|
||||
|
||||
EXPECT_TRUE(HMM_EqualsVec2(a, b));
|
||||
EXPECT_FALSE(HMM_EqualsVec2(a, c));
|
||||
|
||||
#ifdef __cplusplus
|
||||
EXPECT_TRUE(HMM_Equals(a, b));
|
||||
EXPECT_FALSE(HMM_Equals(a, c));
|
||||
|
||||
EXPECT_TRUE(a == b);
|
||||
EXPECT_FALSE(a == c);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Equality, Vec3)
|
||||
{
|
||||
hmm_vec3 a = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 b = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 c = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
EXPECT_TRUE(HMM_EqualsVec3(a, b));
|
||||
EXPECT_FALSE(HMM_EqualsVec3(a, c));
|
||||
|
||||
#ifdef __cplusplus
|
||||
EXPECT_TRUE(HMM_Equals(a, b));
|
||||
EXPECT_FALSE(HMM_Equals(a, c));
|
||||
|
||||
EXPECT_TRUE(a == b);
|
||||
EXPECT_FALSE(a == c);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Equality, Vec4)
|
||||
{
|
||||
hmm_vec4 a = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 b = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 c = HMM_Vec4(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
EXPECT_TRUE(HMM_EqualsVec4(a, b));
|
||||
EXPECT_FALSE(HMM_EqualsVec4(a, c));
|
||||
|
||||
#ifdef __cplusplus
|
||||
EXPECT_TRUE(HMM_Equals(a, b));
|
||||
EXPECT_FALSE(HMM_Equals(a, c));
|
||||
|
||||
EXPECT_TRUE(a == b);
|
||||
EXPECT_FALSE(a == c);
|
||||
#endif
|
||||
}
|
||||
246
test/categories/Initialization.h
Normal file
246
test/categories/Initialization.h
Normal file
@@ -0,0 +1,246 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Initialization, Vectors)
|
||||
{
|
||||
//
|
||||
// Test vec2
|
||||
//
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 v2i = HMM_Vec2(1, 2);
|
||||
|
||||
EXPECT_FLOAT_EQ(v2.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2.U, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2.V, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Left, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Right, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Width, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Height, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Elements[1], 2.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v2[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2[1], 2.0f);
|
||||
#endif
|
||||
|
||||
EXPECT_FLOAT_EQ(v2i.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.U, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.V, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Left, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Right, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Width, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Height, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i.Elements[1], 2.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v2i[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v2i[1], 2.0f);
|
||||
#endif
|
||||
|
||||
//
|
||||
// Test vec3
|
||||
//
|
||||
hmm_vec3 v3 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v3i = HMM_Vec3i(1, 2, 3);
|
||||
|
||||
EXPECT_FLOAT_EQ(v3.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.U, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.V, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.W, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.R, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.G, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.B, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.YZ.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.YZ.Elements[1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.UV.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3.UV.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.VW.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3.VW.Elements[1], 3.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v3[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3[2], 3.0f);
|
||||
#endif
|
||||
|
||||
EXPECT_FLOAT_EQ(v3i.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.U, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.V, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.W, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.R, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.G, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.B, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.YZ.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.YZ.Elements[1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.UV.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.UV.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.VW.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i.VW.Elements[1], 3.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v3i[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v3i[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v3i[2], 3.0f);
|
||||
#endif
|
||||
|
||||
//
|
||||
// Test vec4
|
||||
//
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 v4i = HMM_Vec4i(1, 2, 3, 4);
|
||||
hmm_vec4 v4v = HMM_Vec4v(v3, 4.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(v4.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.W, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4.R, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.G, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.B, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.A, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.YZ.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.YZ.Elements[1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.ZW.Elements[0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.ZW.Elements[1], 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XYZ.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XYZ.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.XYZ.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.RGB.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4.RGB.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4.RGB.Elements[2], 3.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v4[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4[3], 4.0f);
|
||||
#endif
|
||||
|
||||
EXPECT_FLOAT_EQ(v4i.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.W, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.R, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.G, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.B, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.A, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.YZ.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.YZ.Elements[1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.ZW.Elements[0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.ZW.Elements[1], 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XYZ.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XYZ.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.XYZ.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.RGB.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.RGB.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i.RGB.Elements[2], 3.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v4i[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4i[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4i[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4i[3], 4.0f);
|
||||
#endif
|
||||
|
||||
EXPECT_FLOAT_EQ(v4v.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.W, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.R, 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.G, 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.B, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.A, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.YZ.Elements[0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.YZ.Elements[1], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.ZW.Elements[0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.ZW.Elements[1], 4.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XY.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XY.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XYZ.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XYZ.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.XYZ.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.RGB.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.RGB.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v.RGB.Elements[2], 3.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(v4v[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(v4v[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(v4v[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4v[3], 4.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Initialization, MatrixEmpty)
|
||||
{
|
||||
hmm_mat4 m4 = HMM_Mat4();
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(m4.Elements[Column][Row], 0.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(m4[Column][Row], 0.0f);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Initialization, MatrixDiagonal)
|
||||
{
|
||||
hmm_mat4 m4d = HMM_Mat4d(1.0f);
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
if (Column == Row) {
|
||||
EXPECT_FLOAT_EQ(m4d.Elements[Column][Row], 1.0f);
|
||||
} else {
|
||||
EXPECT_FLOAT_EQ(m4d.Elements[Column][Row], 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Initialization, Quaternion)
|
||||
{
|
||||
hmm_quaternion q = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(q.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(q.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(q.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(q.W, 4.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(q.Elements[0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(q.Elements[1], 2.0f);
|
||||
EXPECT_FLOAT_EQ(q.Elements[2], 3.0f);
|
||||
EXPECT_FLOAT_EQ(q.Elements[3], 4.0f);
|
||||
|
||||
hmm_vec4 v = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion qv = HMM_QuaternionV4(v);
|
||||
|
||||
EXPECT_FLOAT_EQ(qv.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(qv.Y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(qv.Z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(qv.W, 4.0f);
|
||||
}
|
||||
154
test/categories/MatrixOps.h
Normal file
154
test/categories/MatrixOps.h
Normal file
@@ -0,0 +1,154 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
void printQuat(hmm_quaternion quat) {
|
||||
printf("\n%f %f %f %f", quat.X, quat.Y, quat.Z, quat.W);
|
||||
}
|
||||
|
||||
TEST(MatrixOps, Transpose)
|
||||
{
|
||||
hmm_mat4 m4 = HMM_Mat4(); // will have 1 - 16
|
||||
|
||||
// Fill the matrix
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the matrix
|
||||
hmm_mat4 result = HMM_Transpose(m4);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 13.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 14.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 7.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 11.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 15.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 8.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 16.0f);
|
||||
}
|
||||
|
||||
TEST(MatrixOps, ToQuaternion)
|
||||
{
|
||||
{ // Test 90 degree rotation about X axis
|
||||
hmm_mat4 rot = {
|
||||
1.0f, 0.0f, 0.0f, 0.0f, // first column (X)
|
||||
0.0f, 0.0f, 1.0f, 0.0f, // second column (Y)
|
||||
0.0f, -1.0f, 0.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(1.0f, 0.0f, 0.0f), HMM_ToRadians(90.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
|
||||
{ // Test 90 degree rotation about Y axis
|
||||
hmm_mat4 rot = {
|
||||
0.0f, 0.0f, -1.0f, 0.0f, // first column (X)
|
||||
0.0f, 1.0f, 0.0f, 0.0f, // second column (Y)
|
||||
1.0f, 0.0f, 0.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 1.0f, 0.0f), HMM_ToRadians(90.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
|
||||
{ // Test 90 degree rotation about Z axis
|
||||
hmm_mat4 rot = {
|
||||
0.0f, 1.0f, 0.0f, 0.0f, // first column (X)
|
||||
-1.0f, 0.0f, 0.0f, 0.0f, // second column (Y)
|
||||
0.0f, 0.0f, 1.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 0.0f, 1.0f), HMM_ToRadians(90.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
|
||||
{ // Test 180 degree rotation about X axis
|
||||
hmm_mat4 rot = {
|
||||
1.0f, 0.0f, 0.0f, 0.0f, // first column (X)
|
||||
0.0f, -1.0f, 1.0f, 0.0f, // second column (Y)
|
||||
0.0f, 0.0f, -1.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(1.0f, 0.0f, 0.0f), HMM_ToRadians(180.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
printQuat(expected);
|
||||
printQuat(actualResult);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
|
||||
{ // Test 180 degree rotation about Y axis
|
||||
hmm_mat4 rot = {
|
||||
-1.0f, 0.0f, 0.0f, 0.0f, // first column (X)
|
||||
0.0f, 1.0f, 1.0f, 0.0f, // second column (Y)
|
||||
0.0f, 0.0f, -1.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 1.0f, 0.0f), HMM_ToRadians(180.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
printQuat(expected);
|
||||
printQuat(actualResult);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
|
||||
{ // Test 180 degree rotation about Z axis
|
||||
hmm_mat4 rot = {
|
||||
-1.0f, 0.0f, 0.0f, 0.0f, // first column (X)
|
||||
0.0f, -1.0f, 1.0f, 0.0f, // second column (Y)
|
||||
0.0f, 0.0f, 1.0f, 0.0f, // third column (Z)
|
||||
0.0f, 0.0f, 0.0f, 0.0f
|
||||
};
|
||||
|
||||
hmm_quaternion expected = HMM_QuaternionFromAxisAngle(HMM_Vec3(0.0f, 0.0f, 1.0f), HMM_ToRadians(180.0f));
|
||||
hmm_quaternion actualResult = HMM_Mat4ToQuaternion(rot);
|
||||
|
||||
printQuat(expected);
|
||||
printQuat(actualResult);
|
||||
|
||||
EXPECT_FLOAT_EQ(actualResult.X, expected.X);
|
||||
EXPECT_FLOAT_EQ(actualResult.Y, expected.Y);
|
||||
EXPECT_FLOAT_EQ(actualResult.Z, expected.Z);
|
||||
EXPECT_FLOAT_EQ(actualResult.W, expected.W);
|
||||
}
|
||||
}
|
||||
536
test/categories/Multiplication.h
Normal file
536
test/categories/Multiplication.h
Normal file
@@ -0,0 +1,536 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Multiplication, Vec2Vec2)
|
||||
{
|
||||
hmm_vec2 v2_1 = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 v2_2 = HMM_Vec2(3.0f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_MultiplyVec2(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Multiply(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2_1 * v2_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 8.0f);
|
||||
}
|
||||
|
||||
v2_1 *= v2_2;
|
||||
EXPECT_FLOAT_EQ(v2_1.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v2_1.Y, 8.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Vec2Scalar)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, 2.0f);
|
||||
float s = 3.0f;
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_MultiplyVec2f(v2, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Multiply(v2, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2 * s;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = s * v2;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
}
|
||||
|
||||
v2 *= s;
|
||||
EXPECT_FLOAT_EQ(v2.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v2.Y, 6.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Vec3Vec3)
|
||||
{
|
||||
hmm_vec3 v3_1 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v3_2 = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_MultiplyVec3(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 18.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Multiply(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 18.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3_1 * v3_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 18.0f);
|
||||
}
|
||||
|
||||
v3_1 *= v3_2;
|
||||
EXPECT_FLOAT_EQ(v3_1.X, 4.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Z, 18.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Vec3Scalar)
|
||||
{
|
||||
hmm_vec3 v3 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
float s = 3.0f;
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_MultiplyVec3f(v3, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Multiply(v3, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3 * s;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = s * v3;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
}
|
||||
|
||||
v3 *= s;
|
||||
EXPECT_FLOAT_EQ(v3.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(v3.Z, 9.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Vec4Vec4)
|
||||
{
|
||||
hmm_vec4 v4_1 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 v4_2 = HMM_Vec4(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_MultiplyVec4(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 32.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Multiply(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 32.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4_1 * v4_2;
|
||||
EXPECT_FLOAT_EQ(result.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 32.0f);
|
||||
}
|
||||
|
||||
v4_1 *= v4_2;
|
||||
EXPECT_FLOAT_EQ(v4_1.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Y, 12.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Z, 21.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.W, 32.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Vec4Scalar)
|
||||
{
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
float s = 3.0f;
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_MultiplyVec4f(v4, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Multiply(v4, s);
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4 * s;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = s * v4;
|
||||
EXPECT_FLOAT_EQ(result.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 12.0f);
|
||||
}
|
||||
|
||||
v4 *= s;
|
||||
EXPECT_FLOAT_EQ(v4.X, 3.0f);
|
||||
EXPECT_FLOAT_EQ(v4.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(v4.Z, 9.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Mat4Mat4)
|
||||
{
|
||||
hmm_mat4 m4_1 = HMM_Mat4(); // will have 1 - 16
|
||||
hmm_mat4 m4_2 = HMM_Mat4(); // will have 17 - 32
|
||||
|
||||
// Fill the matrices
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_1.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_2.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_mat4 result = HMM_MultiplyMat4(m4_1, m4_2);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 538.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 612.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 686.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 760.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 650.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 740.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 830.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 920.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 762.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 868.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 974.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 1080.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 874.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 996.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 1118.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 1240.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_mat4 result = HMM_Multiply(m4_1, m4_2);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 538.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 612.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 686.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 760.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 650.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 740.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 830.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 920.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 762.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 868.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 974.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 1080.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 874.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 996.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 1118.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 1240.0f);
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = m4_1 * m4_2;
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 538.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 612.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 686.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 760.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 650.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 740.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 830.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 920.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 762.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 868.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 974.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 1080.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 874.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 996.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 1118.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 1240.0f);
|
||||
}
|
||||
|
||||
// At the time I wrote this, I intentionally omitted
|
||||
// the *= operator for matrices because matrix
|
||||
// multiplication is not commutative. (bvisness)
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Mat4Scalar)
|
||||
{
|
||||
hmm_mat4 m4 = HMM_Mat4(); // will have 1 - 16
|
||||
float s = 3;
|
||||
|
||||
// Fill the matrix
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_mat4 result = HMM_MultiplyMat4f(m4, s);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 15.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 18.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 27.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 30.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 33.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 36.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 39.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 42.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_mat4 result = HMM_Multiply(m4, s);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 15.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 18.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 27.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 30.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 33.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 36.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 39.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 42.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f);
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = m4 * s;
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 15.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 18.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 27.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 30.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 33.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 36.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 39.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 42.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f);
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = s * m4;
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][0], 15.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][1], 18.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][2], 21.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][0], 27.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][1], 30.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][2], 33.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 36.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][0], 39.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][1], 42.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][2], 45.0f);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 48.0f);
|
||||
}
|
||||
|
||||
m4 *= s;
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][0], 3.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][1], 6.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][2], 9.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[0][3], 12.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][0], 15.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][1], 18.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][2], 21.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[1][3], 24.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][0], 27.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][1], 30.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][2], 33.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[2][3], 36.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][0], 39.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][1], 42.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][2], 45.0f);
|
||||
EXPECT_FLOAT_EQ(m4.Elements[3][3], 48.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, Mat4Vec4)
|
||||
{
|
||||
hmm_mat4 m4 = HMM_Mat4(); // will have 1 - 16
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
|
||||
// Fill the matrix
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_vec4 result = HMM_MultiplyMat4ByVec4(m4, v4);
|
||||
EXPECT_FLOAT_EQ(result.X, 90.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 100.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 110.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 120.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Multiply(m4, v4);
|
||||
EXPECT_FLOAT_EQ(result.X, 90.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 100.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 110.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 120.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = m4 * v4;
|
||||
EXPECT_FLOAT_EQ(result.X, 90.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 100.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 110.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 120.0f);
|
||||
}
|
||||
|
||||
// *= makes no sense for this particular case.
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, QuaternionQuaternion)
|
||||
{
|
||||
hmm_quaternion q1 = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion q2 = HMM_Quaternion(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_MultiplyQuaternion(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -6.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Multiply(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -6.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = q1 * q2;
|
||||
EXPECT_FLOAT_EQ(result.X, 24.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 48.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -6.0f);
|
||||
}
|
||||
|
||||
// Like with matrices, we're not implementing the *=
|
||||
// operator for quaternions because quaternion multiplication
|
||||
// is not commutative.
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Multiplication, QuaternionScalar)
|
||||
{
|
||||
hmm_quaternion q = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
float f = 2.0f;
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_MultiplyQuaternionF(q, f);
|
||||
EXPECT_FLOAT_EQ(result.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 8.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Multiply(q, f);
|
||||
EXPECT_FLOAT_EQ(result.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 8.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = q * f;
|
||||
EXPECT_FLOAT_EQ(result.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 8.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = f * q;
|
||||
EXPECT_FLOAT_EQ(result.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 8.0f);
|
||||
}
|
||||
|
||||
q *= f;
|
||||
EXPECT_FLOAT_EQ(q.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(q.Y, 4.0f);
|
||||
EXPECT_FLOAT_EQ(q.Z, 6.0f);
|
||||
EXPECT_FLOAT_EQ(q.W, 8.0f);
|
||||
#endif
|
||||
}
|
||||
36
test/categories/Projection.h
Normal file
36
test/categories/Projection.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Projection, Orthographic)
|
||||
{
|
||||
hmm_mat4 projection = HMM_Orthographic(-10.0f, 10.0f, -5.0f, 5.0f, 0.0f, -10.0f);
|
||||
|
||||
hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -5.0f);
|
||||
hmm_vec4 projected = HMM_MultiplyMat4ByVec4(projection, HMM_Vec4v(original, 1));
|
||||
|
||||
EXPECT_FLOAT_EQ(projected.X, 0.5f);
|
||||
EXPECT_FLOAT_EQ(projected.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(projected.Z, -2.0f);
|
||||
EXPECT_FLOAT_EQ(projected.W, 1.0f);
|
||||
}
|
||||
|
||||
TEST(Projection, Perspective)
|
||||
{
|
||||
hmm_mat4 projection = HMM_Perspective(90.0f, 2.0f, 5.0f, 15.0f);
|
||||
|
||||
{
|
||||
hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -15.0f);
|
||||
hmm_vec4 projected = HMM_MultiplyMat4ByVec4(projection, HMM_Vec4v(original, 1));
|
||||
EXPECT_FLOAT_EQ(projected.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(projected.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(projected.Z, 15.0f);
|
||||
EXPECT_FLOAT_EQ(projected.W, 15.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 original = HMM_Vec3(5.0f, 5.0f, -5.0f);
|
||||
hmm_vec4 projected = HMM_MultiplyMat4ByVec4(projection, HMM_Vec4v(original, 1));
|
||||
EXPECT_FLOAT_EQ(projected.X, 5.0f);
|
||||
EXPECT_FLOAT_EQ(projected.Y, 10.0f);
|
||||
EXPECT_FLOAT_EQ(projected.Z, -5.0f);
|
||||
EXPECT_FLOAT_EQ(projected.W, 5.0f);
|
||||
}
|
||||
}
|
||||
148
test/categories/QuaternionOps.h
Normal file
148
test/categories/QuaternionOps.h
Normal file
@@ -0,0 +1,148 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(QuaternionOps, Inverse)
|
||||
{
|
||||
hmm_quaternion q1 = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion inverse = HMM_InverseQuaternion(q1);
|
||||
|
||||
hmm_quaternion result = HMM_MultiplyQuaternion(q1, inverse);
|
||||
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 1.0f);
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, Dot)
|
||||
{
|
||||
hmm_quaternion q1 = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion q2 = HMM_Quaternion(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
float result = HMM_DotQuaternion(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result, 70.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
float result = HMM_Dot(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result, 70.0f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, Normalize)
|
||||
{
|
||||
hmm_quaternion q = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_NormalizeQuaternion(q);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.1825741858f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.3651483717f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.5477225575f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.7302967433f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Normalize(q);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.1825741858f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.3651483717f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.5477225575f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.7302967433f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, NLerp)
|
||||
{
|
||||
hmm_quaternion from = HMM_Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
hmm_quaternion to = HMM_Quaternion(0.5f, 0.5f, -0.5f, 0.5f);
|
||||
|
||||
hmm_quaternion result = HMM_NLerp(from, 0.5f, to);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.86602540f);
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, Slerp)
|
||||
{
|
||||
hmm_quaternion from = HMM_Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
hmm_quaternion to = HMM_Quaternion(0.5f, 0.5f, -0.5f, 0.5f);
|
||||
|
||||
hmm_quaternion result = HMM_Slerp(from, 0.5f, to);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -0.28867513f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.86602540f);
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, ToMat4)
|
||||
{
|
||||
const float abs_error = 0.0001f;
|
||||
|
||||
{
|
||||
// Identity quaternion
|
||||
hmm_quaternion rot = HMM_Quaternion(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
hmm_mat4 result = HMM_QuaternionToMat4(rot);
|
||||
|
||||
EXPECT_NEAR(result.Elements[0][0], 1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[1][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][1], 1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[2][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][2], 1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[3][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][3], 1.0f, abs_error);
|
||||
}
|
||||
|
||||
{
|
||||
// Straightforward 90 degree rotation
|
||||
hmm_quaternion rot = HMM_Quaternion(0.707107f, 0.0f, 0.0f, 0.707107f);
|
||||
|
||||
hmm_mat4 result = HMM_QuaternionToMat4(rot);
|
||||
|
||||
EXPECT_NEAR(result.Elements[0][0], 1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[1][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][2], 1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[2][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][1], -1.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][3], 0.0f, abs_error);
|
||||
|
||||
EXPECT_NEAR(result.Elements[3][0], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][1], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][2], 0.0f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][3], 1.0f, abs_error);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(QuaternionOps, FromAxisAngle)
|
||||
{
|
||||
hmm_vec3 axis = HMM_Vec3(1.0f, 0.0f, 0.0f);
|
||||
float angle = HMM_PI32 / 2.0f;
|
||||
|
||||
hmm_quaternion result = HMM_QuaternionFromAxisAngle(axis, angle);
|
||||
EXPECT_NEAR(result.X, 0.707107f, FLT_EPSILON * 2);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
EXPECT_NEAR(result.W, 0.707107f, FLT_EPSILON * 2);
|
||||
}
|
||||
41
test/categories/SSE.h
Normal file
41
test/categories/SSE.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
#ifdef HANDMADE_MATH__USE_SSE
|
||||
|
||||
TEST(SSE, LinearCombine)
|
||||
{
|
||||
hmm_mat4 MatrixOne = HMM_Mat4d(2.0f);
|
||||
hmm_mat4 MatrixTwo = HMM_Mat4d(4.0f);
|
||||
hmm_mat4 Result;
|
||||
|
||||
Result.Rows[0] = HMM_LinearCombineSSE(MatrixOne.Rows[0], MatrixTwo);
|
||||
Result.Rows[1] = HMM_LinearCombineSSE(MatrixOne.Rows[1], MatrixTwo);
|
||||
Result.Rows[2] = HMM_LinearCombineSSE(MatrixOne.Rows[2], MatrixTwo);
|
||||
Result.Rows[3] = HMM_LinearCombineSSE(MatrixOne.Rows[3], MatrixTwo);
|
||||
|
||||
{
|
||||
EXPECT_FLOAT_EQ(Result.Elements[0][0], 8.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[0][1], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[0][2], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[0][3], 0.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(Result.Elements[1][0], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[1][1], 8.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[1][2], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[1][3], 0.0f);
|
||||
|
||||
|
||||
EXPECT_FLOAT_EQ(Result.Elements[2][0], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[2][1], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[2][2], 8.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[2][3], 0.0f);
|
||||
|
||||
|
||||
EXPECT_FLOAT_EQ(Result.Elements[3][0], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[3][1], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[3][2], 0.0f);
|
||||
EXPECT_FLOAT_EQ(Result.Elements[3][3], 8.0f);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
74
test/categories/ScalarMath.h
Normal file
74
test/categories/ScalarMath.h
Normal file
@@ -0,0 +1,74 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(ScalarMath, Trigonometry)
|
||||
{
|
||||
// We have to be a little looser with our equality constraint
|
||||
// because of floating-point precision issues.
|
||||
const float trigAbsError = 0.0001f;
|
||||
|
||||
EXPECT_NEAR(HMM_SinF(0.0f), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_SinF(HMM_PI32 / 2), 1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_SinF(HMM_PI32), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_SinF(3 * HMM_PI32 / 2), -1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_SinF(-HMM_PI32 / 2), -1.0f, trigAbsError);
|
||||
|
||||
EXPECT_NEAR(HMM_CosF(0.0f), 1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_CosF(HMM_PI32 / 2), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_CosF(HMM_PI32), -1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_CosF(3 * HMM_PI32 / 2), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_CosF(-HMM_PI32), -1.0f, trigAbsError);
|
||||
|
||||
EXPECT_NEAR(HMM_TanF(0.0f), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_TanF(HMM_PI32 / 4), 1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_TanF(3 * HMM_PI32 / 4), -1.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_TanF(HMM_PI32), 0.0f, trigAbsError);
|
||||
EXPECT_NEAR(HMM_TanF(-HMM_PI32 / 4), -1.0f, trigAbsError);
|
||||
|
||||
// This isn't the most rigorous because we're really just sanity-
|
||||
// checking that things work by default.
|
||||
}
|
||||
|
||||
TEST(ScalarMath, ToRadians)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_ToRadians(0.0f), 0.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_ToRadians(180.0f), HMM_PI32);
|
||||
EXPECT_FLOAT_EQ(HMM_ToRadians(-180.0f), -HMM_PI32);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, SquareRoot)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_SquareRootF(16.0f), 4.0f);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, RSquareRootF)
|
||||
{
|
||||
EXPECT_NEAR(HMM_RSquareRootF(10.0f), 0.31616211f, 0.0001f);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, Power)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_Power(2.0f, 0), 1.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Power(2.0f, 4), 16.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Power(2.0f, -2), 0.25f);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, PowerF)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_PowerF(2.0f, 0), 1.0f);
|
||||
EXPECT_NEAR(HMM_PowerF(2.0f, 4.1), 17.148376f, 0.0001f);
|
||||
EXPECT_NEAR(HMM_PowerF(2.0f, -2.5), 0.176777f, 0.0001f);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, Lerp)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 0.0f, 2.0f), -2.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 0.5f, 2.0f), 0.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Lerp(-2.0f, 1.0f, 2.0f), 2.0f);
|
||||
}
|
||||
|
||||
TEST(ScalarMath, Clamp)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, 0.0f, 2.0f), 0.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, -3.0f, 2.0f), -2.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Clamp(-2.0f, 3.0f, 2.0f), 2.0f);
|
||||
}
|
||||
201
test/categories/Subtraction.h
Normal file
201
test/categories/Subtraction.h
Normal file
@@ -0,0 +1,201 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Subtraction, Vec2)
|
||||
{
|
||||
hmm_vec2 v2_1 = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 v2_2 = HMM_Vec2(3.0f, 4.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_SubtractVec2(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -2.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Subtract(v2_1, v2_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -2.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec2 result = v2_1 - v2_2;
|
||||
EXPECT_FLOAT_EQ(result.X, -2.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -2.0f);
|
||||
}
|
||||
|
||||
v2_1 -= v2_2;
|
||||
EXPECT_FLOAT_EQ(v2_1.X, -2.0f);
|
||||
EXPECT_FLOAT_EQ(v2_1.Y, -2.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Subtraction, Vec3)
|
||||
{
|
||||
hmm_vec3 v3_1 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v3_2 = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
{
|
||||
hmm_vec3 result = HMM_SubtractVec3(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -3.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec3 result = HMM_Subtract(v3_1, v3_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -3.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = v3_1 - v3_2;
|
||||
EXPECT_FLOAT_EQ(result.X, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -3.0f);
|
||||
}
|
||||
|
||||
v3_1 -= v3_2;
|
||||
EXPECT_FLOAT_EQ(v3_1.X, -3.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Y, -3.0f);
|
||||
EXPECT_FLOAT_EQ(v3_1.Z, -3.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Subtraction, Vec4)
|
||||
{
|
||||
hmm_vec4 v4_1 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 v4_2 = HMM_Vec4(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_vec4 result = HMM_SubtractVec4(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec4 result = HMM_Subtract(v4_1, v4_2);
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = v4_1 - v4_2;
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
|
||||
v4_1 -= v4_2;
|
||||
EXPECT_FLOAT_EQ(v4_1.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(v4_1.W, -4.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Subtraction, Mat4)
|
||||
{
|
||||
hmm_mat4 m4_1 = HMM_Mat4(); // will have 1 - 16
|
||||
hmm_mat4 m4_2 = HMM_Mat4(); // will have 17 - 32
|
||||
|
||||
// Fill the matrices
|
||||
int Counter = 1;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_1.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
m4_2.Elements[Column][Row] = Counter;
|
||||
++Counter;
|
||||
}
|
||||
}
|
||||
|
||||
// Test the results
|
||||
{
|
||||
hmm_mat4 result = HMM_SubtractMat4(m4_1, m4_2);
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], -16.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_mat4 result = HMM_Subtract(m4_1, m4_2);
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], -16.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
hmm_mat4 result = m4_1 - m4_2;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(result.Elements[Column][Row], -16.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m4_1 -= m4_2;
|
||||
for (int Column = 0; Column < 4; ++Column)
|
||||
{
|
||||
for (int Row = 0; Row < 4; ++Row)
|
||||
{
|
||||
EXPECT_FLOAT_EQ(m4_1.Elements[Column][Row], -16.0f);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Subtraction, Quaternion)
|
||||
{
|
||||
hmm_quaternion q1 = HMM_Quaternion(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_quaternion q2 = HMM_Quaternion(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
{
|
||||
hmm_quaternion result = HMM_SubtractQuaternion(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_quaternion result = HMM_Subtract(q1, q2);
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
{
|
||||
hmm_quaternion result = q1 - q2;
|
||||
EXPECT_FLOAT_EQ(result.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, -4.0f);
|
||||
}
|
||||
|
||||
q1 -= q2;
|
||||
EXPECT_FLOAT_EQ(q1.X, -4.0f);
|
||||
EXPECT_FLOAT_EQ(q1.Y, -4.0f);
|
||||
EXPECT_FLOAT_EQ(q1.Z, -4.0f);
|
||||
EXPECT_FLOAT_EQ(q1.W, -4.0f);
|
||||
#endif
|
||||
}
|
||||
77
test/categories/Transformation.h
Normal file
77
test/categories/Transformation.h
Normal file
@@ -0,0 +1,77 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(Transformations, Translate)
|
||||
{
|
||||
hmm_mat4 translate = HMM_Translate(HMM_Vec3(1.0f, -3.0f, 6.0f));
|
||||
|
||||
hmm_vec3 original = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec4 translated = HMM_MultiplyMat4ByVec4(translate, HMM_Vec4v(original, 1));
|
||||
|
||||
EXPECT_FLOAT_EQ(translated.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(translated.Y, -1.0f);
|
||||
EXPECT_FLOAT_EQ(translated.Z, 9.0f);
|
||||
EXPECT_FLOAT_EQ(translated.W, 1.0f);
|
||||
}
|
||||
|
||||
TEST(Transformations, Rotate)
|
||||
{
|
||||
hmm_vec3 original = HMM_Vec3(1.0f, 1.0f, 1.0f);
|
||||
|
||||
hmm_mat4 rotateX = HMM_Rotate(90, HMM_Vec3(1, 0, 0));
|
||||
hmm_vec4 rotatedX = HMM_MultiplyMat4ByVec4(rotateX, HMM_Vec4v(original, 1));
|
||||
EXPECT_FLOAT_EQ(rotatedX.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedX.Y, -1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedX.Z, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedX.W, 1.0f);
|
||||
|
||||
hmm_mat4 rotateY = HMM_Rotate(90, HMM_Vec3(0, 1, 0));
|
||||
hmm_vec4 rotatedY = HMM_MultiplyMat4ByVec4(rotateY, HMM_Vec4v(original, 1));
|
||||
EXPECT_FLOAT_EQ(rotatedY.X, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedY.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedY.Z, -1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedY.W, 1.0f);
|
||||
|
||||
hmm_mat4 rotateZ = HMM_Rotate(90, HMM_Vec3(0, 0, 1));
|
||||
hmm_vec4 rotatedZ = HMM_MultiplyMat4ByVec4(rotateZ, HMM_Vec4v(original, 1));
|
||||
EXPECT_FLOAT_EQ(rotatedZ.X, -1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedZ.Y, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedZ.Z, 1.0f);
|
||||
EXPECT_FLOAT_EQ(rotatedZ.W, 1.0f);
|
||||
}
|
||||
|
||||
TEST(Transformations, Scale)
|
||||
{
|
||||
hmm_mat4 scale = HMM_Scale(HMM_Vec3(2.0f, -3.0f, 0.5f));
|
||||
|
||||
hmm_vec3 original = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec4 scaled = HMM_MultiplyMat4ByVec4(scale, HMM_Vec4v(original, 1));
|
||||
|
||||
EXPECT_FLOAT_EQ(scaled.X, 2.0f);
|
||||
EXPECT_FLOAT_EQ(scaled.Y, -6.0f);
|
||||
EXPECT_FLOAT_EQ(scaled.Z, 1.5f);
|
||||
EXPECT_FLOAT_EQ(scaled.W, 1.0f);
|
||||
}
|
||||
|
||||
TEST(Transformations, LookAt)
|
||||
{
|
||||
const float abs_error = 0.0001f;
|
||||
|
||||
hmm_mat4 result = HMM_LookAt(HMM_Vec3(1.0f, 0.0f, 0.0f), HMM_Vec3(0.0f, 2.0f, 1.0f), HMM_Vec3(2.0f, 1.0f, 1.0f));
|
||||
|
||||
EXPECT_NEAR(result.Elements[0][0], 0.169031f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][1], 0.897085f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[0][2], 0.408248f, abs_error);
|
||||
EXPECT_FLOAT_EQ(result.Elements[0][3], 0.0f);
|
||||
EXPECT_NEAR(result.Elements[1][0], 0.507093f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][1], 0.276026f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[1][2], -0.816497f, abs_error);
|
||||
EXPECT_FLOAT_EQ(result.Elements[1][3], 0.0f);
|
||||
EXPECT_NEAR(result.Elements[2][0], -0.845154f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][1], 0.345033f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[2][2], -0.408248f, abs_error);
|
||||
EXPECT_FLOAT_EQ(result.Elements[2][3], 0.0f);
|
||||
EXPECT_NEAR(result.Elements[3][0], -0.169031f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][1], -0.897085f, abs_error);
|
||||
EXPECT_NEAR(result.Elements[3][2], -0.408248f, abs_error);
|
||||
EXPECT_FLOAT_EQ(result.Elements[3][3], 1.0f);
|
||||
}
|
||||
194
test/categories/VectorOps.h
Normal file
194
test/categories/VectorOps.h
Normal file
@@ -0,0 +1,194 @@
|
||||
#include "../HandmadeTest.h"
|
||||
|
||||
TEST(VectorOps, LengthSquared)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, -2.0f);
|
||||
hmm_vec3 v3 = HMM_Vec3(1.0f, -2.0f, 3.0f);
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, -2.0f, 3.0f, 1.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquaredVec2(v2), 5.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquaredVec3(v3), 14.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquaredVec4(v4), 15.0f);
|
||||
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquared(v2), 5.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquared(v3), 14.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthSquared(v4), 15.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, Length)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, -9.0f);
|
||||
hmm_vec3 v3 = HMM_Vec3(2.0f, -3.0f, 6.0f);
|
||||
hmm_vec4 v4 = HMM_Vec4(2.0f, -3.0f, 6.0f, 12.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec2(v2), 9.0553856f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec3(v3), 7.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec4(v4), 13.892444f);
|
||||
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(HMM_Length(v2), 9.0553856f);
|
||||
EXPECT_FLOAT_EQ(HMM_Length(v3), 7.0f);
|
||||
EXPECT_FLOAT_EQ(HMM_Length(v4), 13.892444f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, Normalize)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(1.0f, -2.0f);
|
||||
hmm_vec3 v3 = HMM_Vec3(1.0f, -2.0f, 3.0f);
|
||||
hmm_vec4 v4 = HMM_Vec4(1.0f, -2.0f, 3.0f, -1.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_NormalizeVec2(v2);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec2(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = HMM_NormalizeVec3(v3);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec3(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
EXPECT_GT(result.Z, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = HMM_NormalizeVec4(v4);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec4(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
EXPECT_GT(result.Z, 0.0f);
|
||||
EXPECT_LT(result.W, 0.0f);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Normalize(v2);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec2(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = HMM_Normalize(v3);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec3(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
EXPECT_GT(result.Z, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = HMM_Normalize(v4);
|
||||
EXPECT_FLOAT_EQ(HMM_LengthVec4(result), 1.0f);
|
||||
EXPECT_GT(result.X, 0.0f);
|
||||
EXPECT_LT(result.Y, 0.0f);
|
||||
EXPECT_GT(result.Z, 0.0f);
|
||||
EXPECT_LT(result.W, 0.0f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, NormalizeZero)
|
||||
{
|
||||
hmm_vec2 v2 = HMM_Vec2(0.0f, 0.0f);
|
||||
hmm_vec3 v3 = HMM_Vec3(0.0f, 0.0f, 0.0f);
|
||||
hmm_vec4 v4 = HMM_Vec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
{
|
||||
hmm_vec2 result = HMM_NormalizeVec2(v2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = HMM_NormalizeVec3(v3);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = HMM_NormalizeVec4(v4);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.0f);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
{
|
||||
hmm_vec2 result = HMM_Normalize(v2);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec3 result = HMM_Normalize(v3);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
}
|
||||
{
|
||||
hmm_vec4 result = HMM_Normalize(v4);
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.W, 0.0f);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, Cross)
|
||||
{
|
||||
{
|
||||
// Normal cross
|
||||
hmm_vec3 v1 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v2 = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
hmm_vec3 result = HMM_Cross(v1, v2);
|
||||
|
||||
EXPECT_FLOAT_EQ(result.X, -3.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 6.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, -3.0f);
|
||||
}
|
||||
|
||||
{
|
||||
// Vector with itself
|
||||
hmm_vec3 v = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
|
||||
hmm_vec3 result = HMM_Cross(v, v);
|
||||
|
||||
EXPECT_FLOAT_EQ(result.X, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Y, 0.0f);
|
||||
EXPECT_FLOAT_EQ(result.Z, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(VectorOps, DotVec2)
|
||||
{
|
||||
hmm_vec2 v1 = HMM_Vec2(1.0f, 2.0f);
|
||||
hmm_vec2 v2 = HMM_Vec2(3.0f, 4.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(HMM_DotVec2(v1, v2), 11.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 11.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, DotVec3)
|
||||
{
|
||||
hmm_vec3 v1 = HMM_Vec3(1.0f, 2.0f, 3.0f);
|
||||
hmm_vec3 v2 = HMM_Vec3(4.0f, 5.0f, 6.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(HMM_DotVec3(v1, v2), 32.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 32.0f);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(VectorOps, DotVec4)
|
||||
{
|
||||
hmm_vec4 v1 = HMM_Vec4(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
hmm_vec4 v2 = HMM_Vec4(5.0f, 6.0f, 7.0f, 8.0f);
|
||||
|
||||
EXPECT_FLOAT_EQ(HMM_DotVec4(v1, v2), 70.0f);
|
||||
#ifdef __cplusplus
|
||||
EXPECT_FLOAT_EQ(HMM_Dot(v1, v2), 70.0f);
|
||||
#endif
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
clone_folder: c:\dev\glm-cmake
|
||||
|
||||
os:
|
||||
- Visual Studio 2013
|
||||
- Visual Studio 2015
|
||||
- Visual Studio 2017
|
||||
|
||||
platform:
|
||||
- x86
|
||||
- x86_64
|
||||
|
||||
build_script:
|
||||
- cmake --version
|
||||
- md build_pure_11
|
||||
- cd build_pure_11
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake -E time cmake --build . --config Debug
|
||||
- cmake -E time cmake --build . --config Release
|
||||
- cd ..
|
||||
- md build_simd_11
|
||||
- cd build_simd_11
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON ..
|
||||
- cmake -E time cmake --build . --config Debug
|
||||
- cmake -E time cmake --build . --config Release
|
||||
- cd ..
|
||||
- md build_pure_98
|
||||
- cd build_pure_98
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake -E time cmake --build . --config Debug
|
||||
- cmake -E time cmake --build . --config Release
|
||||
- cd ..
|
||||
- md build_simd_98
|
||||
- cd build_simd_98
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON ..
|
||||
- cmake -E time cmake --build . --config Debug
|
||||
- cmake -E time cmake --build . --config Release
|
||||
- cd ..
|
||||
56
test/glm/.gitignore
vendored
56
test/glm/.gitignore
vendored
@@ -1,56 +0,0 @@
|
||||
# Compiled Object files
|
||||
*.slo
|
||||
*.lo
|
||||
*.o
|
||||
*.obj
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Compiled Dynamic libraries
|
||||
*.so
|
||||
*.dylib
|
||||
*.dll
|
||||
|
||||
# Fortran module files
|
||||
*.mod
|
||||
|
||||
# Compiled Static libraries
|
||||
*.lai
|
||||
*.la
|
||||
*.a
|
||||
*.lib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
|
||||
# CMake
|
||||
CMakeCache.txt
|
||||
CMakeFiles
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
*.cmake
|
||||
# ^ May need to add future .cmake files as exceptions
|
||||
|
||||
# Test logs
|
||||
Testing/*
|
||||
|
||||
# Test input
|
||||
test/gtc/*.dds
|
||||
|
||||
# Project Files
|
||||
Makefile
|
||||
*.cbp
|
||||
*.user
|
||||
|
||||
# Misc.
|
||||
*.log
|
||||
|
||||
# local build(s)
|
||||
build*
|
||||
|
||||
/.vs
|
||||
/CMakeSettings.json
|
||||
@@ -1,100 +0,0 @@
|
||||
language: cpp
|
||||
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-4.9
|
||||
env: COMPILER=g++-4.9
|
||||
- compiler: gcc
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
packages:
|
||||
- g++-7
|
||||
env: COMPILER=g++-7
|
||||
- compiler: clang
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- ubuntu-toolchain-r-test
|
||||
- llvm-toolchain-precise-3.6
|
||||
packages:
|
||||
- clang-3.6
|
||||
env: COMPILER=clang++-3.6
|
||||
- compiler: clang
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- llvm-toolchain-trusty-4.0
|
||||
packages:
|
||||
- clang-4.0
|
||||
env: COMPILER=clang++-4.0
|
||||
compiler:
|
||||
- clang
|
||||
|
||||
before_script:
|
||||
|
||||
script:
|
||||
- cmake --version
|
||||
- mkdir ./build_pure_11
|
||||
- cd ./build_pure_11
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_pure_98
|
||||
- cd ./build_pure_98
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_pure_11_debug
|
||||
- cd ./build_pure_11_debug
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_pure_98_debug
|
||||
- cd ./build_pure_98_debug
|
||||
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_simd_11
|
||||
- cd ./build_simd_11
|
||||
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_simd_98
|
||||
- cd ./build_simd_98
|
||||
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_simd_11_debug
|
||||
- cd ./build_simd_11_debug
|
||||
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
- mkdir ./build_simd_98_debug
|
||||
- cd ./build_simd_98_debug
|
||||
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
|
||||
- cmake -E time cmake --build .
|
||||
- ctest
|
||||
- cd ..
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,223 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
|
||||
cmake_policy(VERSION 3.2)
|
||||
|
||||
set(GLM_VERSION "0.9.9")
|
||||
project(glm VERSION ${GLM_VERSION} LANGUAGES CXX)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
enable_testing()
|
||||
|
||||
option(GLM_STATIC_LIBRARY_ENABLE "GLM static library" OFF)
|
||||
if(GLM_STATIC_LIBRARY_ENABLE)
|
||||
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_STATIC_LIBRARY_ENABLE with ON to build an optional static library")
|
||||
endif()
|
||||
|
||||
option(GLM_DYNAMIC_LIBRARY_ENABLE "GLM dynamic library" OFF)
|
||||
if(GLM_DYNAMIC_LIBRARY_ENABLE)
|
||||
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_DYNAMIC_LIBRARY_ENABLE with ON to build an optional dynamic library")
|
||||
endif()
|
||||
|
||||
option(GLM_TEST_ENABLE "GLM test" OFF)
|
||||
if(NOT GLM_TEST_ENABLE)
|
||||
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_TEST_ENABLE with ON to build and run the test bench")
|
||||
endif()
|
||||
|
||||
option(GLM_TEST_ENABLE_CXX_98 "Enable C++ 98" OFF)
|
||||
option(GLM_TEST_ENABLE_CXX_11 "Enable C++ 11" OFF)
|
||||
option(GLM_TEST_ENABLE_CXX_14 "Enable C++ 14" OFF)
|
||||
option(GLM_TEST_ENABLE_CXX_17 "Enable C++ 17" OFF)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
if(GLM_TEST_ENABLE_CXX_17)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
message(STATUS "GLM: Build with C++17 features")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_CXX_14)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
message(STATUS "GLM: Build with C++14 features")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_CXX_11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
message(STATUS "GLM: Build with C++11 features")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_CXX_98)
|
||||
set(CMAKE_CXX_STANDARD 98)
|
||||
message(STATUS "GLM: Build with C++98 features")
|
||||
endif()
|
||||
|
||||
option(GLM_TEST_ENABLE_LANG_EXTENSIONS "Enable language extensions" OFF)
|
||||
|
||||
if(GLM_TEST_ENABLE_LANG_EXTENSIONS)
|
||||
set(CMAKE_CXX_EXTENSIONS ON)
|
||||
|
||||
message(STATUS "GLM: Build with C++ language extensions")
|
||||
else()
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
endif()
|
||||
|
||||
option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF)
|
||||
if(GLM_TEST_ENABLE_FAST_MATH)
|
||||
message(STATUS "GLM: Build with fast math optimizations")
|
||||
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU"))
|
||||
add_compile_options(-ffast-math)
|
||||
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
add_compile_options(/fp:fast)
|
||||
endif()
|
||||
else()
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
add_compile_options(/fp:precise)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(GLM_TEST_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF)
|
||||
option(GLM_TEST_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF)
|
||||
option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF)
|
||||
option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF)
|
||||
option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF)
|
||||
|
||||
if(GLM_TEST_FORCE_PURE)
|
||||
add_definitions(-DGLM_FORCE_PURE)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
add_compile_options(-mfpmath=387)
|
||||
endif()
|
||||
message(STATUS "GLM: No SIMD instruction set")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_SIMD_AVX2)
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||
add_compile_options(-mavx2)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
add_compile_options(/QxAVX2)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
add_compile_options(/arch:AVX2)
|
||||
endif()
|
||||
message(STATUS "GLM: AVX2 instruction set")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_SIMD_AVX)
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||
add_compile_options(-mavx)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
add_compile_options(/QxAVX)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
add_compile_options(/arch:AVX)
|
||||
endif()
|
||||
message(STATUS "GLM: AVX instruction set")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_SIMD_SSE3)
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||
add_compile_options(-msse3)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
add_compile_options(/QxSSE3)
|
||||
elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64)
|
||||
add_compile_options(/arch:SSE2) # VC doesn't support /arch:SSE3
|
||||
endif()
|
||||
message(STATUS "GLM: SSE3 instruction set")
|
||||
|
||||
elseif(GLM_TEST_ENABLE_SIMD_SSE2)
|
||||
if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||
add_compile_options(-msse2)
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
add_compile_options(/QxSSE2)
|
||||
elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64)
|
||||
add_compile_options(/arch:SSE2)
|
||||
endif()
|
||||
message(STATUS "GLM: SSE2 instruction set")
|
||||
endif()
|
||||
|
||||
# Compiler and default options
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
message("GLM: Clang - ${CMAKE_CXX_COMPILER_ID} compiler")
|
||||
|
||||
add_compile_options(-Werror -Weverything)
|
||||
add_compile_options(-Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-c++11-long-long -Wno-padded -Wno-gnu-anonymous-struct -Wno-nested-anon-types)
|
||||
add_compile_options(-Wno-undefined-reinterpret-cast -Wno-sign-conversion -Wno-unused-variable -Wno-missing-prototypes -Wno-unreachable-code -Wno-missing-variable-declarations -Wno-sign-compare -Wno-global-constructors -Wno-unused-macros -Wno-format-nonliteral)
|
||||
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||
message("GLM: GCC - ${CMAKE_CXX_COMPILER_ID} compiler")
|
||||
|
||||
add_compile_options(-O2)
|
||||
add_compile_options(-Wno-long-long)
|
||||
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
|
||||
message("GLM: Intel - ${CMAKE_CXX_COMPILER_ID} compiler")
|
||||
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||
message("GLM: Visual C++ - ${CMAKE_CXX_COMPILER_ID} compiler")
|
||||
|
||||
add_compile_options(/FAs /W4 /WX)
|
||||
add_compile_options(/wd4309 /wd4324 /wd4389 /wd4127 /wd4267 /wd4146 /wd4201 /wd4464 /wd4514 /wd4701 /wd4820 /wd4365)
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
endif()
|
||||
|
||||
include_directories("${PROJECT_SOURCE_DIR}")
|
||||
|
||||
add_subdirectory(glm)
|
||||
add_subdirectory(test)
|
||||
|
||||
option(GLM_INSTALL_ENABLE "GLM install" ON)
|
||||
|
||||
set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
|
||||
if (GLM_INSTALL_ENABLE)
|
||||
install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
endif()
|
||||
|
||||
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion)
|
||||
|
||||
# build tree package config
|
||||
configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY)
|
||||
|
||||
# install tree package config
|
||||
configure_package_config_file(
|
||||
cmake/glmConfig.cmake.in
|
||||
${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake
|
||||
INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR}
|
||||
PATH_VARS CMAKE_INSTALL_INCLUDEDIR
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
|
||||
if(GLM_INSTALL_ENABLE)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake"
|
||||
DESTINATION ${GLM_INSTALL_CONFIGDIR})
|
||||
endif()
|
||||
|
||||
add_library(glm INTERFACE)
|
||||
target_include_directories(glm INTERFACE
|
||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
|
||||
install(TARGETS glm EXPORT glmTargets)
|
||||
|
||||
export(EXPORT glmTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake")
|
||||
|
||||
if(GLM_INSTALL_ENABLE)
|
||||
install(EXPORT glmTargets FILE glmTargets.cmake DESTINATION ${GLM_INSTALL_CONFIGDIR})
|
||||
endif()
|
||||
|
||||
# build pkg-config file
|
||||
configure_file("./cmake/glm.pc.in" "glm.pc" @ONLY)
|
||||
|
||||
# install pkg-config file
|
||||
if (GLM_INSTALL_ENABLE)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glm.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||
endif()
|
||||
|
||||
export(PACKAGE glm)
|
||||
|
||||
if(NOT TARGET uninstall)
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
|
||||
IMMEDIATE @ONLY)
|
||||
|
||||
add_custom_target(uninstall
|
||||
COMMAND ${CMAKE_COMMAND} -P
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
||||
endif()
|
||||
@@ -1,7 +0,0 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: GLM
|
||||
Description: OpenGL Mathematics
|
||||
Version: @GLM_VERSION@
|
||||
Cflags: -I${includedir}
|
||||
@@ -1,6 +0,0 @@
|
||||
set(GLM_VERSION "@GLM_VERSION@")
|
||||
set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@")
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
|
||||
endif()
|
||||
@@ -1,9 +0,0 @@
|
||||
set(GLM_VERSION "@GLM_VERSION@")
|
||||
|
||||
@PACKAGE_INIT@
|
||||
|
||||
set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
||||
|
||||
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
|
||||
endif()
|
||||
@@ -1,26 +0,0 @@
|
||||
if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
|
||||
|
||||
if (NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
|
||||
endif ()
|
||||
message(${CMAKE_INSTALL_PREFIX})
|
||||
|
||||
file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
|
||||
string(REGEX REPLACE "\n" ";" files "${files}")
|
||||
foreach(file ${files})
|
||||
message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
|
||||
if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
exec_program(
|
||||
"@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
|
||||
OUTPUT_VARIABLE rm_out
|
||||
RETURN_VALUE rm_retval
|
||||
)
|
||||
if(NOT "${rm_retval}" STREQUAL 0)
|
||||
message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
|
||||
endif(NOT "${rm_retval}" STREQUAL 0)
|
||||
else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
|
||||
endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
|
||||
endforeach(file)
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _features.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_features.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00001_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00001_source.html">_features.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,494 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _features.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_features.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00001.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// #define GLM_CXX98_EXCEPTIONS</span></div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// #define GLM_CXX98_RTTI</span></div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// #define GLM_CXX11_RVALUE_REFERENCES</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Rvalue references - GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html</span></div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// GLM_CXX11_TRAILING_RETURN</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// Rvalue references for *this - GCC not supported</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Initialization of class objects by rvalues - GCC any</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// Non-static data member initializers - GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">// #define GLM_CXX11_VARIADIC_TEMPLATE</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Variadic templates - GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf</span></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// Extending variadic template template parameters - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf</span></div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// #define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// Initializer lists - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm</span></div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// #define GLM_CXX11_STATIC_ASSERT </span></div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// Static assertions - GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html</span></div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// auto-typed variables - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf</span></div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// Multi-declarator auto - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf</span></div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// Removal of auto as a storage-class specifier - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm</span></div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// New function declarator syntax - GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm</span></div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">// #define GLM_CXX11_LAMBDAS</span></div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// New wording for C++0x lambdas - GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf</span></div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// #define GLM_CXX11_DECLTYPE</span></div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Declared type of an expression - GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf</span></div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">// Right angle brackets - GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html</span></div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// Default template arguments for function templates DR226 GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226</span></div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// Solving the SFINAE problem for expressions DR339 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html</span></div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">// #define GLM_CXX11_ALIAS_TEMPLATE</span></div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">// Template aliases N2258 GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf</span></div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// Extern templates N1987 Yes</span></div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm</span></div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">// #define GLM_CXX11_NULLPTR</span></div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// Null pointer constant N2431 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf</span></div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// #define GLM_CXX11_STRONG_ENUMS</span></div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Strongly-typed enums N2347 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf</span></div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Forward declarations for enums N2764 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf</span></div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// Generalized attributes N2761 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf</span></div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// Generalized constant expressions N2235 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf</span></div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// Alignment support N2341 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf</span></div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// #define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// Delegating constructors N1986 GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf</span></div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// Inheriting constructors N2540 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm</span></div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment">// #define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">// Explicit conversion operators N2437 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf</span></div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">// New character types N2249 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html</span></div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// Unicode string literals N2442 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">// Raw string literals N2442 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// Universal character name literals N2170 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html</span></div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// #define GLM_CXX11_USER_LITERALS</span></div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">// User-defined literals N2765 GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf</span></div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// Standard Layout Types N2342 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm</span></div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="comment">// #define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="comment">// #define GLM_CXX11_DELETED_FUNCTIONS</span></div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">// Defaulted and deleted functions N2346 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm</span></div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// Extended friend declarations N1791 GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf</span></div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// Extending sizeof N2253 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html</span></div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment">// #define GLM_CXX11_INLINE_NAMESPACES</span></div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// Inline namespaces N2535 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm</span></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="comment">// #define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">// Unrestricted unions N2544 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf</span></div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// Local and unnamed types as template arguments N2657 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm</span></div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="comment">// #define GLM_CXX11_RANGE_FOR</span></div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// Range-based for N2930 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html</span></div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="comment">// #define GLM_CXX11_OVERRIDE_CONTROL</span></div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="comment">// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7</span></div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm</span></div>
|
||||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm</span></div>
|
||||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm</span></div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// Minimal support for garbage collection and reachability-based leak detection N2670 No</span></div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm</span></div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// #define GLM_CXX11_NOEXCEPT</span></div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)</span></div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html</span></div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">// Defining move special member functions N3053 GCC 4.6</span></div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html</span></div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment">// Sequence points N2239 Yes</span></div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">// Atomic operations N2427 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment">// Strong Compare and Exchange N2748 GCC 4.5</span></div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html</span></div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment">// Bidirectional Fences N2752 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm</span></div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// Memory model N2429 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm</span></div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Data-dependency ordering: atomics and memory model N2664 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm</span></div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> </div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment">// Propagating exceptions N2179 GCC 4.4</span></div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html</span></div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> </div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">// Abandoning a process and at_quick_exit N2440 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm</span></div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> </div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment">// Allow atomics use in signal handlers N2547 Yes</span></div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">// Thread-local storage N2659 GCC 4.8</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm</span></div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// Dynamic initialization and destruction with concurrency N2660 GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">// __func__ predefined identifier N2340 GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">// C99 preprocessor N1653 GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> </div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="comment">// long long N1811 GCC 4.3</span></div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf</span></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// </span></div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment">// Extended integral types N1988 Yes</span></div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> </div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#if(GLM_COMPILER & GLM_COMPILER_GCC)</span></div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> </div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#elif(GLM_COMPILER & GLM_COMPILER_CLANG)</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor"># if(__has_feature(cxx_exceptions))</span></div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"># define GLM_CXX98_EXCEPTIONS</span></div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="preprocessor"># if(__has_feature(cxx_rtti))</span></div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor"># define GLM_CXX98_RTTI</span></div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="preprocessor"># if(__has_feature(cxx_access_control_sfinae))</span></div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor"># define GLM_CXX11_ACCESS_CONTROL_SFINAE</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"># if(__has_feature(cxx_alias_templates))</span></div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"># define GLM_CXX11_ALIAS_TEMPLATE</span></div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="preprocessor"># if(__has_feature(cxx_alignas))</span></div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor"># define GLM_CXX11_ALIGNAS</span></div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"># if(__has_feature(cxx_attributes))</span></div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"># define GLM_CXX11_ATTRIBUTES</span></div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> </div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor"># if(__has_feature(cxx_constexpr))</span></div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"># define GLM_CXX11_CONSTEXPR</span></div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"># if(__has_feature(cxx_decltype))</span></div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor"># define GLM_CXX11_DECLTYPE</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="preprocessor"># if(__has_feature(cxx_default_function_template_args))</span></div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor"># define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor"># if(__has_feature(cxx_defaulted_functions))</span></div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor"># define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="preprocessor"># if(__has_feature(cxx_delegating_constructors))</span></div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor"># define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor"># if(__has_feature(cxx_deleted_functions))</span></div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"># define GLM_CXX11_DELETED_FUNCTIONS</span></div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor"># if(__has_feature(cxx_explicit_conversions))</span></div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor"># define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor"># if(__has_feature(cxx_generalized_initializers))</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"># define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"># if(__has_feature(cxx_implicit_moves))</span></div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"># define GLM_CXX11_IMPLICIT_MOVES</span></div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"># if(__has_feature(cxx_inheriting_constructors))</span></div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"># define GLM_CXX11_INHERITING_CONSTRUCTORS</span></div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> </div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor"># if(__has_feature(cxx_inline_namespaces))</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor"># define GLM_CXX11_INLINE_NAMESPACES</span></div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> </div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor"># if(__has_feature(cxx_lambdas))</span></div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor"># define GLM_CXX11_LAMBDAS</span></div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor"># if(__has_feature(cxx_local_type_template_args))</span></div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"># define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor"># if(__has_feature(cxx_noexcept))</span></div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"># define GLM_CXX11_NOEXCEPT</span></div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor"># if(__has_feature(cxx_nonstatic_member_init))</span></div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"># define GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor"># if(__has_feature(cxx_nullptr))</span></div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"># define GLM_CXX11_NULLPTR</span></div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor"># if(__has_feature(cxx_override_control))</span></div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor"># define GLM_CXX11_OVERRIDE_CONTROL</span></div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> </div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor"># if(__has_feature(cxx_reference_qualified_functions))</span></div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"># define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS</span></div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor"># if(__has_feature(cxx_range_for))</span></div>
|
||||
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"># define GLM_CXX11_RANGE_FOR</span></div>
|
||||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> </div>
|
||||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor"># if(__has_feature(cxx_raw_string_literals))</span></div>
|
||||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="preprocessor"># define GLM_CXX11_RAW_STRING_LITERALS</span></div>
|
||||
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"># if(__has_feature(cxx_rvalue_references))</span></div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor"># define GLM_CXX11_RVALUE_REFERENCES</span></div>
|
||||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div>
|
||||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"># if(__has_feature(cxx_static_assert))</span></div>
|
||||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
|
||||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div>
|
||||
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor"># if(__has_feature(cxx_auto_type))</span></div>
|
||||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"># define GLM_CXX11_AUTO_TYPE</span></div>
|
||||
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div>
|
||||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor"># if(__has_feature(cxx_strong_enums))</span></div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"># define GLM_CXX11_STRONG_ENUMS</span></div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> </div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor"># if(__has_feature(cxx_trailing_return))</span></div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor"># define GLM_CXX11_TRAILING_RETURN</span></div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> </div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor"># if(__has_feature(cxx_unicode_literals))</span></div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"># define GLM_CXX11_UNICODE_LITERALS</span></div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor"># if(__has_feature(cxx_unrestricted_unions))</span></div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor"># define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor"># if(__has_feature(cxx_user_literals))</span></div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"># define GLM_CXX11_USER_LITERALS</span></div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> </div>
|
||||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor"># if(__has_feature(cxx_variadic_templates))</span></div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="preprocessor"># define GLM_CXX11_VARIADIC_TEMPLATES</span></div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor"># endif</span></div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div>
|
||||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#endif//(GLM_COMPILER & GLM_COMPILER_CLANG)</span></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _fixes.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_fixes.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00002_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00002_source.html">_fixes.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,122 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _fixes.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_fixes.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00002.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <cmath></span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#ifdef max</span></div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#undef max</span></div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#ifdef min</span></div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#undef min</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#ifdef isnan</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#undef isnan</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#ifdef isinf</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#undef isinf</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#ifdef log2</span></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#undef log2</span></div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _noise.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_noise.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00003_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00003_source.html">_noise.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,186 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _noise.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_noise.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00003.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "../vec2.hpp"</span></div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "../vec4.hpp"</span></div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "../common.hpp"</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a>{</div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">namespace </span>detail</div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> {</div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  GLM_FUNC_QUALIFIER T mod289(T <span class="keyword">const</span>& x)</div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  {</div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">return</span> x - <a class="code" href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a>(x * (static_cast<T>(1.0) / static_cast<T>(289.0))) * <span class="keyword">static_cast<</span>T<span class="keyword">></span>(289.0);</div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  }</div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  GLM_FUNC_QUALIFIER T permute(T <span class="keyword">const</span>& x)</div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  {</div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  }</div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> <span class="keyword">const</span>& x)</div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {</div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  }</div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> <span class="keyword">const</span>& x)</div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  </div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> <span class="keyword">const</span>& x)</div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  GLM_FUNC_QUALIFIER T taylorInvSqrt(T <span class="keyword">const</span>& r)</div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> <span class="keyword">const</span>& r)</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> <span class="keyword">const</span>& r)</div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> <span class="keyword">const</span>& r)</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> <span class="keyword">const</span>& t)</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> <span class="keyword">const</span>& t)</div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  </div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> <span class="keyword">const</span>& t)</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> }<span class="comment">//namespace detail</span></div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00140_html_gaa9d0742639e85b29c7c5de11cfd6840d"><div class="ttname"><a href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">glm::floor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is less then or equal to x. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _swizzle.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_swizzle.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00004_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00004_source.html">_swizzle.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,895 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _swizzle.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_swizzle.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00004.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a>{</div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keyword">namespace </span>detail</div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="comment">// Internal class for implementing swizzle operators</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keywordtype">int</span> N></div>
|
||||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keyword">struct </span>_swizzle_base0</div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  {</div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  <span class="keyword">protected</span>:</div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  GLM_FUNC_QUALIFIER T& elem(<span class="keywordtype">size_t</span> i){ <span class="keywordflow">return</span> (reinterpret_cast<T*>(_buffer))[i]; }</div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  GLM_FUNC_QUALIFIER T <span class="keyword">const</span>& elem(<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span>{ <span class="keywordflow">return</span> (reinterpret_cast<const T*>(_buffer))[i]; }</div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="comment">// Use an opaque buffer to *ensure* the compiler doesn't call a constructor.</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="comment">// The size 1 buffer is assumed to aligned to the actual members so that the</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="comment">// elem() </span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keywordtype">char</span> _buffer[1];</div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  };</div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keyword">template</span><<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">bool</span> Aligned></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  <span class="keyword">struct </span>_swizzle_base1 : <span class="keyword">public</span> _swizzle_base0<T, N></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  {</div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  };</div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">bool</span> Aligned></div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keyword">struct </span>_swizzle_base1<2, T, Q, E0,E1,-1,-2, Aligned> : <span class="keyword">public</span> _swizzle_base0<T, 2></div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vec<2, T, Q>(this->elem(E0), this->elem(E1)); }</div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  };</div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">bool</span> Aligned></div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">struct </span>_swizzle_base1<3, T, Q, E0,E1,E2,-1, Aligned> : <span class="keyword">public</span> _swizzle_base0<T, 3></div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  {</div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vec<3, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2)); }</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  };</div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">bool</span> Aligned></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keyword">struct </span>_swizzle_base1<4, T, Q, E0,E1,E2,E3, Aligned> : <span class="keyword">public</span> _swizzle_base0<T, 4></div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  { </div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vec<4, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }</div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  };</div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="comment">// Internal class for implementing swizzle operators</span></div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="comment">/*</span></div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment"> Template parameters:</span></div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> T = type of scalar values (e.g. float, double)</span></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> N = number of components in the vector (e.g. 3)</span></div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment"> E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec</span></div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"></span></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"> DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles</span></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"> containing duplicate elements so that they cannot be used as r-values). </span></div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"> */</span></div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">int</span> DUPLICATE_ELEMENTS></div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>_swizzle_base2 : <span class="keyword">public</span> _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (<span class="keyword">const</span> T& t)</div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; ++i)</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  (*<span class="keyword">this</span>)[i] = t;</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (vec<N, T, Q> <span class="keyword">const</span>& that)</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keyword">struct </span>op { </div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T& <a class="code" href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T& t) { e = t; } </div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  };</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  _apply_op(that, op());</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  }</div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator -= (vec<N, T, Q> <span class="keyword">const</span>& that)</div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">struct </span>op { </div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T& <a class="code" href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T& t) { e -= t; } </div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  };</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  _apply_op(that, op());</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator += (vec<N, T, Q> <span class="keyword">const</span>& that)</div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">struct </span>op { </div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T& <a class="code" href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T& t) { e += t; } </div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  };</div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  _apply_op(that, op());</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator *= (vec<N, T, Q> <span class="keyword">const</span>& that)</div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  {</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">struct </span>op { </div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T& <a class="code" href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T& t) { e *= t; } </div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  };</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  _apply_op(that, op());</div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator /= (vec<N, T, Q> <span class="keyword">const</span>& that)</div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  {</div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">struct </span>op { </div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T& <a class="code" href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T& t) { e /= t; } </div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  };</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  _apply_op(that, op());</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GLM_FUNC_QUALIFIER T& operator[](<span class="keywordtype">size_t</span> i)</div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> this->elem(offset_dst[i]);</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  GLM_FUNC_QUALIFIER T operator[](<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="keyword"> </span>{</div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">return</span> this->elem(offset_dst[i]);</div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keyword">protected</span>:</div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">template</span><<span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> _apply_op(vec<N, T, Q> <span class="keyword">const</span>& that, U op)</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// Make a copy of the data in this == &that.</span></div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// The copier should optimize out the copy in cases where the function is</span></div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// properly inlined and the copy is not necessary.</span></div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  T t[N];</div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; ++i)</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  t[i] = that[i];</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < N; ++i)</div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  op( (*<span class="keyword">this</span>)[i], t[i] );</div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  };</div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// Specialization for swizzles containing duplicate elements. These cannot be modified.</span></div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">template</span><<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3></div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">struct </span>_swizzle_base2<N, T, Q, E0,E1,E2,E3, 1> : <span class="keyword">public</span> _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value></div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">struct </span>Stub {};</div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub <span class="keyword">const</span>&) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  GLM_FUNC_QUALIFIER T operator[] (<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span></div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="keyword"> </span>{</div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> this->elem(offset_dst[i]);</div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  };</div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">template</span><<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, qualifier Q, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3></div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keyword">struct </span>_swizzle : <span class="keyword">public</span> _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)></div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keyword">typedef</span> _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)> base_type;</div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">using</span> base_type::operator=;</div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  GLM_FUNC_QUALIFIER <span class="keyword">operator</span> vec<N, T, Q> () <span class="keyword">const</span> { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(); }</div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  };</div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> </div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros</span></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor">#define GLM_SWIZZLE_TEMPLATE1 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3></span></div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define GLM_SWIZZLE_TEMPLATE2 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3></span></div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor">#define GLM_SWIZZLE_TYPE1 _swizzle<N, T, Q, E0, E1, E2, E3></span></div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#define GLM_SWIZZLE_TYPE2 _swizzle<N, T, Q, F0, F1, F2, F3></span></div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> </div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment">// Wrapper for a binary operator (e.g. u.yy + v.zy)</span></div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#define GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \</span></div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE2 \</span></div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \</span></div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor"> return a() OPERAND b(); \</span></div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const vec<N, T, Q>& b) \</span></div>
|
||||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"> return a() OPERAND b; \</span></div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const vec<N, T, Q>& a, const GLM_SWIZZLE_TYPE1& b) \</span></div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor"> return a OPERAND b(); \</span></div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)</span></div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor">#define GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \</span></div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const T& b) \</span></div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor"> return a() OPERAND b; \</span></div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const T& a, const GLM_SWIZZLE_TYPE1& b) \</span></div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> return a OPERAND b(); \</span></div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment">// Macro for wrapping a function taking one argument (e.g. abs())</span></div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#define GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \</span></div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a) \</span></div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor"> return FUNCTION(a()); \</span></div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// Macro for wrapping a function taking two vector arguments (e.g. dot()).</span></div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#define GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \</span></div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE2 \</span></div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \</span></div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> return FUNCTION(a(), b()); \</span></div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b) \</span></div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor"> return FUNCTION(a(), b()); \</span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename V& b) \</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor"> return FUNCTION(a(), b); \</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const GLM_SWIZZLE_TYPE1& b) \</span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor"> return FUNCTION(a, b()); \</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor"> } </span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#define GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \</span></div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE2 \</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b, const T& c) \</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> return FUNCTION(a(), b(), c); \</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \</span></div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor"> return FUNCTION(a(), b(), c); \</span></div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\</span></div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor"> return FUNCTION(a(), b, c); \</span></div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> } \</span></div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"> GLM_SWIZZLE_TEMPLATE1 \</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor"> GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \</span></div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"> return FUNCTION(a, b(), c); \</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor"> } </span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  </div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> }<span class="comment">//namespace detail </span></div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> </div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> {</div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keyword">namespace </span>detail</div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)</div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)</div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)</div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)</div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)</div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  }</div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Swizzles are distinct types from the unswizzled type. The below macros will</span></div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="comment">// provide template specializations for the swizzle types for the given functions</span></div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">// so that the compiler does not have any ambiguity to choosing how to handle</span></div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// the function.</span></div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="comment">// The alternative is to use the operator()() when calling the function in order</span></div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// to explicitly convert the swizzled type to the unswizzled type.</span></div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);</span></div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);</span></div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);</span></div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);</span></div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);</span></div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);</span></div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); </span></div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">//GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);</span></div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> }</div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor">#define GLM_SWIZZLE2_2_MEMBERS(T, Q, E0,E1) \</span></div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor"> struct { detail::_swizzle<2, T, Q, 0,0,-1,-2> E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor"> struct { detail::_swizzle<2, T, Q, 0,1,-1,-2> E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"> struct { detail::_swizzle<2, T, Q, 1,0,-1,-2> E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> struct { detail::_swizzle<2, T, Q, 1,1,-1,-2> E1 ## E1; }; </span></div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> </div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor">#define GLM_SWIZZLE2_3_MEMBERS(T, Q, E0,E1) \</span></div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> struct { detail::_swizzle<3,T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; </span></div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor">#define GLM_SWIZZLE2_4_MEMBERS(T, Q, E0,E1) \</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; };</span></div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> </div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor">#define GLM_SWIZZLE3_2_MEMBERS(T, Q, E0,E1,E2) \</span></div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; };</span></div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> </div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor">#define GLM_SWIZZLE3_3_MEMBERS(T, Q ,E0,E1,E2) \</span></div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; };</span></div>
|
||||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div>
|
||||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#define GLM_SWIZZLE3_4_MEMBERS(T, Q, E0,E1,E2) \</span></div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="preprocessor"> struct { detail::_swizzle<4,T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; </span></div>
|
||||
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div>
|
||||
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor">#define GLM_SWIZZLE4_2_MEMBERS(T, Q, E0,E1,E2,E3) \</span></div>
|
||||
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 0,3,-1,-2> E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 1,3,-1,-2> E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 2,3,-1,-2> E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 3,0,-1,-2> E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 3,1,-1,-2> E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 3,2,-1,-2> E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="preprocessor"> struct { detail::_swizzle<2,T, Q, 3,3,-1,-2> E3 ## E3; }; </span></div>
|
||||
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> </div>
|
||||
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor">#define GLM_SWIZZLE4_3_MEMBERS(T, Q, E0,E1,E2,E3) \</span></div>
|
||||
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,2,-1> E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,0,3,-1> E0 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,2,-1> E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,1,3,-1> E0 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,0,-1> E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,1,-1> E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,2,-1> E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,2,3,-1> E0 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,3,0,-1> E0 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,3,1,-1> E0 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,3,2,-1> E0 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 0,3,3,-1> E0 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,2,-1> E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,0,3,-1> E1 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,1,-1> E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,2,-1> E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,1,3,-1> E1 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,0,-1> E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,1,-1> E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,2,-1> E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,2,3,-1> E1 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,3,0,-1> E1 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,3,1,-1> E1 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,3,2,-1> E1 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 1,3,3,-1> E1 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,0,-1> E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,1,-1> E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,2,-1> E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,0,3,-1> E2 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,0,-1> E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,1,-1> E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,2,-1> E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,1,3,-1> E2 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,0,-1> E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,1,-1> E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,2,-1> E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,2,3,-1> E2 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,3,0,-1> E2 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,3,1,-1> E2 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,3,2,-1> E2 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 2,3,3,-1> E2 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,0,0,-1> E3 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,0,1,-1> E3 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,0,2,-1> E3 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,0,3,-1> E3 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,1,0,-1> E3 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,1,1,-1> E3 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,1,2,-1> E3 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,1,3,-1> E3 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,2,0,-1> E3 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,2,1,-1> E3 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,2,2,-1> E3 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,2,3,-1> E3 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,3,0,-1> E3 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,3,1,-1> E3 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,3,2,-1> E3 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor"> struct { detail::_swizzle<3, T, Q, 3,3,3,-1> E3 ## E3 ## E3; }; </span></div>
|
||||
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div>
|
||||
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#define GLM_SWIZZLE4_4_MEMBERS(T, Q, E0,E1,E2,E3) \</span></div>
|
||||
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \</span></div>
|
||||
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \</span></div>
|
||||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \</span></div>
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \</span></div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="preprocessor"> struct { detail::_swizzle<4, T, Q, 3,3,3,3> E3 ## E3 ## E3 ## E3; };</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00151_html_ga4b7956eb6e2fbedfc7cf2e46e85c5139"><div class="ttname"><a href="a00151.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">glm::e</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR genType e()</div><div class="ttdoc">Return e constant. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _swizzle_func.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_swizzle_func.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00005_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00005_source.html">_swizzle_func.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,782 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _swizzle_func.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_swizzle_func.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00005.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B) \</span></div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor"> vec<2, T, Q> A ## B() CONST \</span></div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor"> return vec<2, T, Q>(this->A, this->B); \</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor"> vec<3, T, Q> A ## B ## C() CONST \</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor"> return vec<3, T, Q>(this->A, this->B, this->C); \</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"> vec<4, T, Q> A ## B ## C ## D() CONST \</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"> return vec<4, T, Q>(this->A, this->B, this->C, this->D); \</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B) \</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"> template<typename T> \</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"> vec<L, T, Q> vec<L, T, Q>::A ## B() CONST \</span></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"> return vec<2, T, Q>(this->A, this->B); \</span></div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor"> template<typename T> \</span></div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor"> vec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST \</span></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor"> return vec<3, T, Q>(this->A, this->B, this->C); \</span></div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor"> template<typename T> \</span></div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor"> vec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST \</span></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor"> { \</span></div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor"> return vec<4, T, Q>(this->A, this->B, this->C, this->D); \</span></div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor"> }</span></div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#define GLM_MUTABLE</span></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \</span></div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A)</span></div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \</span></div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \</span></div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \</span></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t)</span></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \</span></div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \</span></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \</span></div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \</span></div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \</span></div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B)</span></div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A)</span></div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C)</span></div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \</span></div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \</span></div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \</span></div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p)</span></div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \</span></div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \</span></div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \</span></div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \</span></div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \</span></div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \</span></div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \</span></div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \</span></div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \</span></div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \</span></div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \</span></div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C)</span></div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B)</span></div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A)</span></div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)</span></div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \</span></div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \</span></div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \</span></div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q)</span></div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \</span></div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \</span></div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \</span></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B)</span></div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B)</span></div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B)</span></div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \</span></div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B)</span></div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P) \</span></div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y) \</span></div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g) \</span></div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t)</span></div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \</span></div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \</span></div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \</span></div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \</span></div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \</span></div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \</span></div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \</span></div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \</span></div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C)</span></div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C)</span></div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C)</span></div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C)</span></div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \</span></div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \</span></div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \</span></div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p)</span></div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \</span></div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \</span></div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \</span></div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \</span></div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \</span></div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \</span></div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \</span></div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \</span></div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \</span></div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \</span></div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \</span></div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \</span></div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \</span></div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \</span></div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \</span></div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D)</span></div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \</span></div>
|
||||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \</span></div>
|
||||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \</span></div>
|
||||
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \</span></div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \</span></div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \</span></div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \</span></div>
|
||||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \</span></div>
|
||||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \</span></div>
|
||||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \</span></div>
|
||||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \</span></div>
|
||||
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \</span></div>
|
||||
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \</span></div>
|
||||
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \</span></div>
|
||||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \</span></div>
|
||||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \</span></div>
|
||||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \</span></div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \</span></div>
|
||||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D)</span></div>
|
||||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div>
|
||||
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \</span></div>
|
||||
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \</span></div>
|
||||
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \</span></div>
|
||||
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \</span></div>
|
||||
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \</span></div>
|
||||
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \</span></div>
|
||||
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \</span></div>
|
||||
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \</span></div>
|
||||
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \</span></div>
|
||||
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \</span></div>
|
||||
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \</span></div>
|
||||
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \</span></div>
|
||||
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \</span></div>
|
||||
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \</span></div>
|
||||
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \</span></div>
|
||||
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \</span></div>
|
||||
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \</span></div>
|
||||
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \</span></div>
|
||||
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \</span></div>
|
||||
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \</span></div>
|
||||
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \</span></div>
|
||||
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \</span></div>
|
||||
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \</span></div>
|
||||
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \</span></div>
|
||||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \</span></div>
|
||||
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \</span></div>
|
||||
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \</span></div>
|
||||
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \</span></div>
|
||||
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \</span></div>
|
||||
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \</span></div>
|
||||
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \</span></div>
|
||||
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \</span></div>
|
||||
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \</span></div>
|
||||
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \</span></div>
|
||||
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \</span></div>
|
||||
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \</span></div>
|
||||
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \</span></div>
|
||||
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \</span></div>
|
||||
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \</span></div>
|
||||
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \</span></div>
|
||||
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \</span></div>
|
||||
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \</span></div>
|
||||
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \</span></div>
|
||||
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \</span></div>
|
||||
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \</span></div>
|
||||
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \</span></div>
|
||||
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \</span></div>
|
||||
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \</span></div>
|
||||
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \</span></div>
|
||||
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \</span></div>
|
||||
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \</span></div>
|
||||
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \</span></div>
|
||||
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \</span></div>
|
||||
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \</span></div>
|
||||
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \</span></div>
|
||||
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \</span></div>
|
||||
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \</span></div>
|
||||
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \</span></div>
|
||||
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \</span></div>
|
||||
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \</span></div>
|
||||
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \</span></div>
|
||||
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \</span></div>
|
||||
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \</span></div>
|
||||
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \</span></div>
|
||||
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \</span></div>
|
||||
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \</span></div>
|
||||
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \</span></div>
|
||||
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \</span></div>
|
||||
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \</span></div>
|
||||
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \</span></div>
|
||||
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \</span></div>
|
||||
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \</span></div>
|
||||
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \</span></div>
|
||||
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \</span></div>
|
||||
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \</span></div>
|
||||
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \</span></div>
|
||||
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \</span></div>
|
||||
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \</span></div>
|
||||
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \</span></div>
|
||||
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \</span></div>
|
||||
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \</span></div>
|
||||
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \</span></div>
|
||||
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \</span></div>
|
||||
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \</span></div>
|
||||
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \</span></div>
|
||||
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \</span></div>
|
||||
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \</span></div>
|
||||
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \</span></div>
|
||||
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \</span></div>
|
||||
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \</span></div>
|
||||
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \</span></div>
|
||||
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \</span></div>
|
||||
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \</span></div>
|
||||
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \</span></div>
|
||||
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \</span></div>
|
||||
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \</span></div>
|
||||
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \</span></div>
|
||||
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \</span></div>
|
||||
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \</span></div>
|
||||
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \</span></div>
|
||||
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \</span></div>
|
||||
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \</span></div>
|
||||
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \</span></div>
|
||||
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \</span></div>
|
||||
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \</span></div>
|
||||
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \</span></div>
|
||||
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \</span></div>
|
||||
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \</span></div>
|
||||
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \</span></div>
|
||||
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \</span></div>
|
||||
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \</span></div>
|
||||
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \</span></div>
|
||||
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \</span></div>
|
||||
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \</span></div>
|
||||
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \</span></div>
|
||||
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \</span></div>
|
||||
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \</span></div>
|
||||
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \</span></div>
|
||||
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \</span></div>
|
||||
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D)</span></div>
|
||||
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> </div>
|
||||
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \</span></div>
|
||||
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)</span></div>
|
||||
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> </div>
|
||||
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \</span></div>
|
||||
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \</span></div>
|
||||
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \</span></div>
|
||||
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)</span></div>
|
||||
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> </div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,108 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _vectorize.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_vectorize.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00006_source.html">Go to the source code of this file.</a></p>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00006_source.html">_vectorize.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,233 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: _vectorize.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_da256b9dd32ba43e2eaa8a2832c37f1b.html">detail</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">_vectorize.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00006.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
||||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "<a class="code" href="a00121.html">type_vec1.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "<a class="code" href="a00122.html">type_vec2.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="a00123.html">type_vec3.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="a00124.html">type_vec4.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div>
|
||||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a>{</div>
|
||||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">namespace </span>detail</div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> {</div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keyword">struct </span>functor1{};</div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">struct </span>functor1<1, R, T, Q></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  {</div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, R, Q> call(R (*Func) (T x), vec<1, T, Q> <span class="keyword">const</span>& v)</div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  {</div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  <span class="keywordflow">return</span> vec<1, R, Q>(Func(v.x));</div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  }</div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  };</div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">struct </span>functor1<2, R, T, Q></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {</div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, R, Q> call(R (*Func) (T x), vec<2, T, Q> <span class="keyword">const</span>& v)</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  {</div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">return</span> vec<2, R, Q>(Func(v.x), Func(v.y));</div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  }</div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  };</div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">struct </span>functor1<3, R, T, Q></div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, R, Q> call(R (*Func) (T x), vec<3, T, Q> <span class="keyword">const</span>& v)</div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  {</div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">return</span> vec<3, R, Q>(Func(v.x), Func(v.y), Func(v.z));</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  };</div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span><<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">struct </span>functor1<4, R, T, Q></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, R, Q> call(R (*Func) (T x), vec<4, T, Q> <span class="keyword">const</span>& v)</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">return</span> vec<4, R, Q>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));</div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  };</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">struct </span>functor2{};</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">struct </span>functor2<1, T, Q></div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> <span class="keyword">const</span>& a, vec<1, T, Q> <span class="keyword">const</span>& b)</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  {</div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> vec<1, T, Q>(Func(a.x, b.x));</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  }</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  };</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">struct </span>functor2<2, T, Q></div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  {</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> <span class="keyword">const</span>& a, vec<2, T, Q> <span class="keyword">const</span>& b)</div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  {</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">return</span> vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  }</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  };</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">struct </span>functor2<3, T, Q></div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> <span class="keyword">const</span>& a, vec<3, T, Q> <span class="keyword">const</span>& b)</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> vec<3, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));</div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  };</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">struct </span>functor2<4, T, Q></div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> <span class="keyword">const</span>& a, vec<4, T, Q> <span class="keyword">const</span>& b)</div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  {</div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keywordflow">return</span> vec<4, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));</div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  };</div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keyword">struct </span>functor2_vec_sca{};</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">struct </span>functor2_vec_sca<1, T, Q></div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> vec<1, T, Q>(Func(a.x, b));</div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  };</div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">struct </span>functor2_vec_sca<2, T, Q></div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> vec<2, T, Q>(Func(a.x, b), Func(a.y, b));</div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  };</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">struct </span>functor2_vec_sca<3, T, Q></div>
|
||||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  {</div>
|
||||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> vec<3, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b));</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  }</div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  };</div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">struct </span>functor2_vec_sca<4, T, Q></div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> vec<4, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  }</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  };</div>
|
||||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> }<span class="comment">//namespace detail</span></div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="ttc" id="a00124_html"><div class="ttname"><a href="a00124.html">type_vec4.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00122_html"><div class="ttname"><a href="a00122.html">type_vec2.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00123_html"><div class="ttname"><a href="a00123.html">type_vec3.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00121_html"><div class="ttname"><a href="a00121.html">type_vec1.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,205 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: associated_min_max.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">associated_min_max.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00169.html">GLM_GTX_associated_min_max</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00007_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
||||
<tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga7d9c8785230c8db60f72ec8975f1ba45">associatedMax</a> (T x, U a, T y, U b)</td></tr>
|
||||
<tr class="memdesc:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#ga7d9c8785230c8db60f72ec8975f1ba45">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga5c6758bc50aa7fbe700f87123a045aad">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)</td></tr>
|
||||
<tr class="memdesc:ga5c6758bc50aa7fbe700f87123a045aad"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#ga5c6758bc50aa7fbe700f87123a045aad">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga0d169d6ce26b03248df175f39005d77f">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)</td></tr>
|
||||
<tr class="memdesc:ga0d169d6ce26b03248df175f39005d77f"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#ga0d169d6ce26b03248df175f39005d77f">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga0d169d6ce26b03248df175f39005d77f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga4086269afabcb81dd7ded33cb3448653">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)</td></tr>
|
||||
<tr class="memdesc:ga4086269afabcb81dd7ded33cb3448653"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#ga4086269afabcb81dd7ded33cb3448653">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga4086269afabcb81dd7ded33cb3448653"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
||||
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gaec891e363d91abbf3a4443cf2f652209">associatedMax</a> (T x, U a, T y, U b, T z, U c)</td></tr>
|
||||
<tr class="memdesc:gaec891e363d91abbf3a4443cf2f652209"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#gaec891e363d91abbf3a4443cf2f652209">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaec891e363d91abbf3a4443cf2f652209"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gab84fdc35016a31e8cd0cbb8296bddf7c">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)</td></tr>
|
||||
<tr class="memdesc:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#gab84fdc35016a31e8cd0cbb8296bddf7c">More...</a><br /></td></tr>
|
||||
<tr class="separator:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gadd2a2002f4f2144bbc39eb2336dd2fba">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)</td></tr>
|
||||
<tr class="memdesc:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#gadd2a2002f4f2144bbc39eb2336dd2fba">More...</a><br /></td></tr>
|
||||
<tr class="separator:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga19f59d1141a51a3b2108a9807af78f7f">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)</td></tr>
|
||||
<tr class="memdesc:ga19f59d1141a51a3b2108a9807af78f7f"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#ga19f59d1141a51a3b2108a9807af78f7f">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
||||
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga3038ffcb43eaa6af75897a99a5047ccc">associatedMax</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
|
||||
<tr class="memdesc:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga3038ffcb43eaa6af75897a99a5047ccc">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)</td></tr>
|
||||
<tr class="memdesc:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga11477c2c4b5b0bfd1b72b29df3725a9d">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)</td></tr>
|
||||
<tr class="memdesc:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga11477c2c4b5b0bfd1b72b29df3725a9d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</td></tr>
|
||||
<tr class="memdesc:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="mdescLeft"> </td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">More...</a><br /></td></tr>
|
||||
<tr class="separator:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplParams" colspan="2">template<typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gacc01bd272359572fc28437ae214a02df">associatedMin</a> (T x, U a, T y, U b)</td></tr>
|
||||
<tr class="memdesc:gacc01bd272359572fc28437ae214a02df"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#gacc01bd272359572fc28437ae214a02df">More...</a><br /></td></tr>
|
||||
<tr class="separator:gacc01bd272359572fc28437ae214a02df"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gac2f0dff90948f2e44386a5eafd941d1c">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)</td></tr>
|
||||
<tr class="memdesc:gac2f0dff90948f2e44386a5eafd941d1c"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#gac2f0dff90948f2e44386a5eafd941d1c">More...</a><br /></td></tr>
|
||||
<tr class="separator:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gacfec519c820331d023ef53a511749319">associatedMin</a> (T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)</td></tr>
|
||||
<tr class="memdesc:gacfec519c820331d023ef53a511749319"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#gacfec519c820331d023ef53a511749319">More...</a><br /></td></tr>
|
||||
<tr class="separator:gacfec519c820331d023ef53a511749319"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga4757c7cab2d809124a8525d0a9deeb37">associatedMin</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)</td></tr>
|
||||
<tr class="memdesc:ga4757c7cab2d809124a8525d0a9deeb37"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00169.html#ga4757c7cab2d809124a8525d0a9deeb37">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
||||
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#gad0aa8f86259a26d839d34a3577a923fc">associatedMin</a> (T x, U a, T y, U b, T z, U c)</td></tr>
|
||||
<tr class="memdesc:gad0aa8f86259a26d839d34a3577a923fc"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#gad0aa8f86259a26d839d34a3577a923fc">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad0aa8f86259a26d839d34a3577a923fc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga723e5411cebc7ffbd5c81ffeec61127d">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)</td></tr>
|
||||
<tr class="memdesc:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 3 variables and returns 3 associated variable values. <a href="a00169.html#ga723e5411cebc7ffbd5c81ffeec61127d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
||||
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga432224ebe2085eaa2b63a077ecbbbff6">associatedMin</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
|
||||
<tr class="memdesc:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga432224ebe2085eaa2b63a077ecbbbff6">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga66b08118bc88f0494bcacb7cdb940556">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)</td></tr>
|
||||
<tr class="memdesc:ga66b08118bc88f0494bcacb7cdb940556"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga66b08118bc88f0494bcacb7cdb940556">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga66b08118bc88f0494bcacb7cdb940556"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga78c28fde1a7080fb7420bd88e68c6c68">associatedMin</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)</td></tr>
|
||||
<tr class="memdesc:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga78c28fde1a7080fb7420bd88e68c6c68">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</td></tr>
|
||||
<tr class="memdesc:ga2db7e351994baee78540a562d4bb6d3b"><td class="mdescLeft"> </td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2db7e351994baee78540a562d4bb6d3b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00169.html">GLM_GTX_associated_min_max</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
|
||||
<dd>
|
||||
gtx_extented_min_max (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00007_source.html">associated_min_max.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,250 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: associated_min_max.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">associated_min_max.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00007.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependency:</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># error "GLM: GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_associated_min_max extension included")</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> {</div>
|
||||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(T x, U a, T y, U b);</div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<2, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  T x, <span class="keyword">const</span> vec<L, U, Q>& a,</div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  T y, <span class="keyword">const</span> vec<L, U, Q>& b);</div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b);</div>
|
||||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  T x, U a,</div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  T y, U b,</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  T z, U c);</div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
||||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  T x, U a,</div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  T y, U b,</div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  T z, U c,</div>
|
||||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  T w, U d);</div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  vec<L, T, Q> <span class="keyword">const</span>& w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
||||
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  T w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
|
||||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
||||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c,</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  vec<L, T, Q> <span class="keyword">const</span>& w, U d);</div>
|
||||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(T x, U a, T y, U b);</div>
|
||||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div>
|
||||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  GLM_FUNC_DECL vec<2, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
|
||||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
|
||||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
||||
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b);</div>
|
||||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  T x, U a,</div>
|
||||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  T y, U b,</div>
|
||||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  T z, U c);</div>
|
||||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
||||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
||||
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
||||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
||||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c);</div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div>
|
||||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  GLM_FUNC_DECL U <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  T x, U a,</div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  T y, U b,</div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  T z, U c,</div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  T w, U d);</div>
|
||||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div>
|
||||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  vec<L, T, Q> <span class="keyword">const</span>& w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  T w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
||||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c,</div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  vec<L, T, Q> <span class="keyword">const</span>& w, U d);</div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> } <span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#include "associated_min_max.inl"</span></div>
|
||||
<div class="ttc" id="a00169_html_gab9c3dd74cac899d2c625b5767ea3b3fb"><div class="ttname"><a href="a00169.html#gab9c3dd74cac899d2c625b5767ea3b3fb">glm::associatedMax</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, U, Q > associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</div><div class="ttdoc">Maximum comparison between 4 variables and returns 4 associated variable values. </div></div>
|
||||
<div class="ttc" id="a00169_html_ga2db7e351994baee78540a562d4bb6d3b"><div class="ttname"><a href="a00169.html#ga2db7e351994baee78540a562d4bb6d3b">glm::associatedMin</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, U, Q > associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</div><div class="ttdoc">Minimum comparison between 4 variables and returns 4 associated variable values. </div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,149 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: bit.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">bit.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00170.html">GLM_GTX_bit</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00008_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga0dcc8fe7c3d3ad60dea409281efa3d05">highestBitValue</a> (genIUType Value)</td></tr>
|
||||
<tr class="separator:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a> (vec< L, T, Q > const &value)</td></tr>
|
||||
<tr class="memdesc:ga898ef075ccf809a1e480faab48fe96bf"><td class="mdescLeft"> </td><td class="mdescRight">Find the highest bit set to 1 in a integer variable and return its value. <a href="a00170.html#ga898ef075ccf809a1e480faab48fe96bf">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga898ef075ccf809a1e480faab48fe96bf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a> (genIUType Value)</td></tr>
|
||||
<tr class="separator:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga8cda2459871f574a0aecbe702ac93291">powerOfTwoAbove</a> (genIUType Value)</td></tr>
|
||||
<tr class="memdesc:ga8cda2459871f574a0aecbe702ac93291"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is just higher the input value. <a href="a00170.html#ga8cda2459871f574a0aecbe702ac93291">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8cda2459871f574a0aecbe702ac93291"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a> (vec< L, T, Q > const &value)</td></tr>
|
||||
<tr class="memdesc:ga2bbded187c5febfefc1e524ba31b3fab"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is just higher the input value. <a href="a00170.html#ga2bbded187c5febfefc1e524ba31b3fab">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga3de7df63c589325101a2817a56f8e29d">powerOfTwoBelow</a> (genIUType Value)</td></tr>
|
||||
<tr class="memdesc:ga3de7df63c589325101a2817a56f8e29d"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is just lower the input value. <a href="a00170.html#ga3de7df63c589325101a2817a56f8e29d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga3de7df63c589325101a2817a56f8e29d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a> (vec< L, T, Q > const &value)</td></tr>
|
||||
<tr class="memdesc:gaf78ddcc4152c051b2a21e68fecb10980"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is just lower the input value. <a href="a00170.html#gaf78ddcc4152c051b2a21e68fecb10980">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#ga5f65973a5d2ea38c719e6a663149ead9">powerOfTwoNearest</a> (genIUType Value)</td></tr>
|
||||
<tr class="memdesc:ga5f65973a5d2ea38c719e6a663149ead9"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is the closet to the input value. <a href="a00170.html#ga5f65973a5d2ea38c719e6a663149ead9">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00170.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a> (vec< L, T, Q > const &value)</td></tr>
|
||||
<tr class="memdesc:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="mdescLeft"> </td><td class="mdescRight">Return the power of two number which value is the closet to the input value. <a href="a00170.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">More...</a><br /></td></tr>
|
||||
<tr class="separator:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00170.html">GLM_GTX_bit</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00008_source.html">bit.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,154 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: bit.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">bit.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00008.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependencies</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../gtc/bitfield.hpp"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># error "GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_bit extension is deprecated, include GLM_GTC_bitfield and GLM_GTC_integer instead")</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00170.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a>(genIUType Value);</div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00170.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a>(genIUType Value);</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00170.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00170.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a>(genIUType Value);</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00170.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00170.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a>(genIUType Value);</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
|
||||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00170.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
||||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div>
|
||||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00170.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a>(genIUType Value);</div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div>
|
||||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00170.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> } <span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#include "bit.inl"</span></div>
|
||||
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div>
|
||||
<div class="ttc" id="a00170_html_ga2ff6568089f3a9b67f5c30918855fc6f"><div class="ttname"><a href="a00170.html#ga2ff6568089f3a9b67f5c30918855fc6f">glm::lowestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value)</div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00170_html_ga2bbded187c5febfefc1e524ba31b3fab"><div class="ttname"><a href="a00170.html#ga2bbded187c5febfefc1e524ba31b3fab">glm::powerOfTwoAbove</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoAbove(vec< L, T, Q > const &value)</div><div class="ttdoc">Return the power of two number which value is just higher the input value. </div></div>
|
||||
<div class="ttc" id="a00170_html_gaf78ddcc4152c051b2a21e68fecb10980"><div class="ttname"><a href="a00170.html#gaf78ddcc4152c051b2a21e68fecb10980">glm::powerOfTwoBelow</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoBelow(vec< L, T, Q > const &value)</div><div class="ttdoc">Return the power of two number which value is just lower the input value. </div></div>
|
||||
<div class="ttc" id="a00170_html_ga898ef075ccf809a1e480faab48fe96bf"><div class="ttname"><a href="a00170.html#ga898ef075ccf809a1e480faab48fe96bf">glm::highestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > highestBitValue(vec< L, T, Q > const &value)</div><div class="ttdoc">Find the highest bit set to 1 in a integer variable and return its value. </div></div>
|
||||
<div class="ttc" id="a00170_html_gac87e65d11e16c3d6b91c3bcfaef7da0b"><div class="ttname"><a href="a00170.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">glm::powerOfTwoNearest</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoNearest(vec< L, T, Q > const &value)</div><div class="ttdoc">Return the power of two number which value is the closet to the input value. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,205 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: bitfield.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_7997edb062bdde9a99cb6835d42b0d9d.html">gtc</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">bitfield.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00149.html">GLM_GTC_bitfield</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00009_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga46f9295abe3b5c7658f5b13c7f819f0a">bitfieldFillOne</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
|
||||
<tr class="memdesc:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="mdescLeft"> </td><td class="mdescRight">Set to 1 a range of bits. <a href="a00149.html#ga46f9295abe3b5c7658f5b13c7f819f0a">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a> (vec< L, T, Q > const &Value, int FirstBit, int BitCount)</td></tr>
|
||||
<tr class="memdesc:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="mdescLeft"> </td><td class="mdescRight">Set to 1 a range of bits. <a href="a00149.html#ga3e96dd1f0a4bc892f063251ed118c0c1">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga697b86998b7d74ee0a69d8e9f8819fee">bitfieldFillZero</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
|
||||
<tr class="memdesc:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="mdescLeft"> </td><td class="mdescRight">Set to 0 a range of bits. <a href="a00149.html#ga697b86998b7d74ee0a69d8e9f8819fee">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a> (vec< L, T, Q > const &Value, int FirstBit, int BitCount)</td></tr>
|
||||
<tr class="memdesc:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="mdescLeft"> </td><td class="mdescRight">Set to 0 a range of bits. <a href="a00149.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga24cad0069f9a0450abd80b3e89501adf"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int16 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga24cad0069f9a0450abd80b3e89501adf">bitfieldInterleave</a> (int8 x, int8 y)</td></tr>
|
||||
<tr class="memdesc:ga24cad0069f9a0450abd80b3e89501adf"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#ga24cad0069f9a0450abd80b3e89501adf">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga24cad0069f9a0450abd80b3e89501adf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga9a4976a529aec2cee56525e1165da484"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga9a4976a529aec2cee56525e1165da484">bitfieldInterleave</a> (uint8 x, uint8 y)</td></tr>
|
||||
<tr class="memdesc:ga9a4976a529aec2cee56525e1165da484"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#ga9a4976a529aec2cee56525e1165da484">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga9a4976a529aec2cee56525e1165da484"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac51c33a394593f0631fa3aa5bb778809"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gac51c33a394593f0631fa3aa5bb778809">bitfieldInterleave</a> (int16 x, int16 y)</td></tr>
|
||||
<tr class="memdesc:gac51c33a394593f0631fa3aa5bb778809"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#gac51c33a394593f0631fa3aa5bb778809">More...</a><br /></td></tr>
|
||||
<tr class="separator:gac51c33a394593f0631fa3aa5bb778809"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga94f3646a5667f4be56f8dcf3310e963f">bitfieldInterleave</a> (uint16 x, uint16 y)</td></tr>
|
||||
<tr class="memdesc:ga94f3646a5667f4be56f8dcf3310e963f"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#ga94f3646a5667f4be56f8dcf3310e963f">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gaebb756a24a0784e3d6fba8bd011ab77a">bitfieldInterleave</a> (int32 x, int32 y)</td></tr>
|
||||
<tr class="memdesc:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#gaebb756a24a0784e3d6fba8bd011ab77a">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd">bitfieldInterleave</a> (uint32 x, uint32 y)</td></tr>
|
||||
<tr class="memdesc:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00149.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8fdb724dccd4a07d57efc01147102137"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga8fdb724dccd4a07d57efc01147102137">bitfieldInterleave</a> (int8 x, int8 y, int8 z)</td></tr>
|
||||
<tr class="memdesc:ga8fdb724dccd4a07d57efc01147102137"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#ga8fdb724dccd4a07d57efc01147102137">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8fdb724dccd4a07d57efc01147102137"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga9fc2a0dd5dcf8b00e113f272a5feca93">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z)</td></tr>
|
||||
<tr class="memdesc:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#ga9fc2a0dd5dcf8b00e113f272a5feca93">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa901c36a842fa5d126ea650549f17b24"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gaa901c36a842fa5d126ea650549f17b24">bitfieldInterleave</a> (int16 x, int16 y, int16 z)</td></tr>
|
||||
<tr class="memdesc:gaa901c36a842fa5d126ea650549f17b24"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#gaa901c36a842fa5d126ea650549f17b24">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaa901c36a842fa5d126ea650549f17b24"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga3afd6d38881fe3948c53d4214d2197fd">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z)</td></tr>
|
||||
<tr class="memdesc:ga3afd6d38881fe3948c53d4214d2197fd"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#ga3afd6d38881fe3948c53d4214d2197fd">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad2075d96a6640121edaa98ea534102ca"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gad2075d96a6640121edaa98ea534102ca">bitfieldInterleave</a> (int32 x, int32 y, int32 z)</td></tr>
|
||||
<tr class="memdesc:gad2075d96a6640121edaa98ea534102ca"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#gad2075d96a6640121edaa98ea534102ca">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad2075d96a6640121edaa98ea534102ca"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gab19fbc739fc0cf7247978602c36f7da8"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gab19fbc739fc0cf7247978602c36f7da8">bitfieldInterleave</a> (uint32 x, uint32 y, uint32 z)</td></tr>
|
||||
<tr class="memdesc:gab19fbc739fc0cf7247978602c36f7da8"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00149.html#gab19fbc739fc0cf7247978602c36f7da8">More...</a><br /></td></tr>
|
||||
<tr class="separator:gab19fbc739fc0cf7247978602c36f7da8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga8a44ae22f5c953b296c42d067dccbe6d">bitfieldInterleave</a> (int8 x, int8 y, int8 z, int8 w)</td></tr>
|
||||
<tr class="memdesc:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00149.html#ga8a44ae22f5c953b296c42d067dccbe6d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga14bb274d54a3c26f4919dd7ed0dd0c36">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z, uint8 w)</td></tr>
|
||||
<tr class="memdesc:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00149.html#ga14bb274d54a3c26f4919dd7ed0dd0c36">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#ga180a63161e1319fbd5a53c84d0429c7a">bitfieldInterleave</a> (int16 x, int16 y, int16 z, int16 w)</td></tr>
|
||||
<tr class="memdesc:ga180a63161e1319fbd5a53c84d0429c7a"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00149.html#ga180a63161e1319fbd5a53c84d0429c7a">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafca8768671a14c8016facccb66a89f26"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z, uint16 w)</td></tr>
|
||||
<tr class="memdesc:gafca8768671a14c8016facccb66a89f26"><td class="mdescLeft"> </td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00149.html#gafca8768671a14c8016facccb66a89f26">More...</a><br /></td></tr>
|
||||
<tr class="separator:gafca8768671a14c8016facccb66a89f26"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga2eb49678a344ce1495bdb5586d9896b9">bitfieldRotateLeft</a> (genIUType In, int Shift)</td></tr>
|
||||
<tr class="memdesc:ga2eb49678a344ce1495bdb5586d9896b9"><td class="mdescLeft"> </td><td class="mdescRight">Rotate all bits to the left. <a href="a00149.html#ga2eb49678a344ce1495bdb5586d9896b9">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a> (vec< L, T, Q > const &In, int Shift)</td></tr>
|
||||
<tr class="memdesc:gae186317091b1a39214ebf79008d44a1e"><td class="mdescLeft"> </td><td class="mdescRight">Rotate all bits to the left. <a href="a00149.html#gae186317091b1a39214ebf79008d44a1e">More...</a><br /></td></tr>
|
||||
<tr class="separator:gae186317091b1a39214ebf79008d44a1e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca">bitfieldRotateRight</a> (genIUType In, int Shift)</td></tr>
|
||||
<tr class="memdesc:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="mdescLeft"> </td><td class="mdescRight">Rotate all bits to the right. <a href="a00149.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a> (vec< L, T, Q > const &In, int Shift)</td></tr>
|
||||
<tr class="memdesc:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="mdescLeft"> </td><td class="mdescRight">Rotate all bits to the right. <a href="a00149.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
||||
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#gad7eba518a0b71662114571ee76939f8a">mask</a> (genIUType Bits)</td></tr>
|
||||
<tr class="memdesc:gad7eba518a0b71662114571ee76939f8a"><td class="mdescLeft"> </td><td class="mdescRight">Build a mask of 'count' bits. <a href="a00149.html#gad7eba518a0b71662114571ee76939f8a">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad7eba518a0b71662114571ee76939f8a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00149.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a> (vec< L, T, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:ga2e64e3b922a296033b825311e7f5fff1"><td class="mdescLeft"> </td><td class="mdescRight">Build a mask of 'count' bits. <a href="a00149.html#ga2e64e3b922a296033b825311e7f5fff1">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2e64e3b922a296033b825311e7f5fff1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00149.html">GLM_GTC_bitfield</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
|
||||
<dd>
|
||||
<a class="el" href="a00149.html" title="Include <glm/gtc/bitfield.hpp> to use the features of this extension. ">GLM_GTC_bitfield</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00009_source.html">bitfield.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,189 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: bitfield.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_7997edb062bdde9a99cb6835d42b0d9d.html">gtc</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">bitfield.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00009.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Dependencies</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "../detail/type_int.hpp"</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "../detail/_vectorize.hpp"</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <limits></span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_bitfield extension included")</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00149.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a>(genIUType Bits);</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00149.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a>(vec<L, T, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00149.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00149.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a>(vec<L, T, Q> <span class="keyword">const</span>& In, <span class="keywordtype">int</span> Shift);</div>
|
||||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00149.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00149.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a>(vec<L, T, Q> <span class="keyword">const</span>& In, <span class="keywordtype">int</span> Shift);</div>
|
||||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
|
||||
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00149.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
|
||||
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00149.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a>(vec<L, T, Q> <span class="keyword">const</span>& Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
|
||||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
||||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  GLM_FUNC_DECL genIUType <a class="code" href="a00149.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
|
||||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div>
|
||||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00149.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a>(vec<L, T, Q> <span class="keyword">const</span>& Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
|
||||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  GLM_FUNC_DECL int16 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y);</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div>
|
||||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  GLM_FUNC_DECL uint16 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y);</div>
|
||||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div>
|
||||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  GLM_FUNC_DECL int32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y);</div>
|
||||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> </div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GLM_FUNC_DECL uint32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y);</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div>
|
||||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  GLM_FUNC_DECL int64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y);</div>
|
||||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  GLM_FUNC_DECL uint64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y);</div>
|
||||
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  GLM_FUNC_DECL int32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z);</div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div>
|
||||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  GLM_FUNC_DECL uint32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z);</div>
|
||||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> </div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  GLM_FUNC_DECL int64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z);</div>
|
||||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  GLM_FUNC_DECL uint64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z);</div>
|
||||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  GLM_FUNC_DECL int64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y, int32 z);</div>
|
||||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  GLM_FUNC_DECL uint64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y, uint32 z);</div>
|
||||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  GLM_FUNC_DECL int32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z, int8 w);</div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  GLM_FUNC_DECL uint32 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z, uint8 w);</div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  GLM_FUNC_DECL int64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z, int16 w);</div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  GLM_FUNC_DECL uint64 <a class="code" href="a00149.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z, uint16 w);</div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> } <span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor">#include "bitfield.inl"</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00149_html_gafca8768671a14c8016facccb66a89f26"><div class="ttname"><a href="a00149.html#gafca8768671a14c8016facccb66a89f26">glm::bitfieldInterleave</a></div><div class="ttdeci">GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)</div><div class="ttdoc">Interleaves the bits of x, y, z and w. </div></div>
|
||||
<div class="ttc" id="a00149_html_ga590488e1fc00a6cfe5d3bcaf93fbfe88"><div class="ttname"><a href="a00149.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">glm::bitfieldRotateRight</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)</div><div class="ttdoc">Rotate all bits to the right. </div></div>
|
||||
<div class="ttc" id="a00149_html_ga3e96dd1f0a4bc892f063251ed118c0c1"><div class="ttname"><a href="a00149.html#ga3e96dd1f0a4bc892f063251ed118c0c1">glm::bitfieldFillOne</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 1 a range of bits. </div></div>
|
||||
<div class="ttc" id="a00149_html_ga2e64e3b922a296033b825311e7f5fff1"><div class="ttname"><a href="a00149.html#ga2e64e3b922a296033b825311e7f5fff1">glm::mask</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > mask(vec< L, T, Q > const &v)</div><div class="ttdoc">Build a mask of 'count' bits. </div></div>
|
||||
<div class="ttc" id="a00149_html_ga0d16c9acef4be79ea9b47c082a0cf7c2"><div class="ttname"><a href="a00149.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">glm::bitfieldFillZero</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 0 a range of bits. </div></div>
|
||||
<div class="ttc" id="a00149_html_gae186317091b1a39214ebf79008d44a1e"><div class="ttname"><a href="a00149.html#gae186317091b1a39214ebf79008d44a1e">glm::bitfieldRotateLeft</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)</div><div class="ttdoc">Rotate all bits to the left. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,124 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: closest_point.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">closest_point.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00171.html">GLM_GTX_closest_point</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00010_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga36529c278ef716986151d58d151d697d"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga36529c278ef716986151d58d151d697d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00171.html#ga36529c278ef716986151d58d151d697d">closestPointOnLine</a> (vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)</td></tr>
|
||||
<tr class="memdesc:ga36529c278ef716986151d58d151d697d"><td class="mdescLeft"> </td><td class="mdescRight">Find the point on a straight line which is the closet of a point. <a href="a00171.html#ga36529c278ef716986151d58d151d697d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga36529c278ef716986151d58d151d697d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00171.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a> (vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)</td></tr>
|
||||
<tr class="memdesc:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="mdescLeft"> </td><td class="mdescRight">2d lines work as well <br /></td></tr>
|
||||
<tr class="separator:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00171.html">GLM_GTX_closest_point</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00010_source.html">closest_point.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,133 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: closest_point.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">closest_point.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00010.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># error "GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_closest_point extension included")</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00171.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& point,</div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  vec<3, T, Q> <span class="keyword">const</span>& a, </div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  vec<3, T, Q> <span class="keyword">const</span>& b);</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<2, T, Q> <a class="code" href="a00171.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  vec<2, T, Q> <span class="keyword">const</span>& point,</div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  vec<2, T, Q> <span class="keyword">const</span>& a, </div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  vec<2, T, Q> <span class="keyword">const</span>& b); </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }<span class="comment">// namespace glm</span></div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "closest_point.inl"</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00171_html_ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><div class="ttname"><a href="a00171.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">glm::closestPointOnLine</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 2, T, Q > closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)</div><div class="ttdoc">2d lines work as well </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,137 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_encoding.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">color_encoding.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00172.html">GLM_GTX_color_encoding</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00011_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad12f4f65022b2c80e33fcba2ced0dc48"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00172.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a> (vec< 3, T, Q > const &ColorD65XYZ)</td></tr>
|
||||
<tr class="memdesc:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="mdescLeft"> </td><td class="mdescRight">Convert a D65 YUV color to D50 YUV. <br /></td></tr>
|
||||
<tr class="separator:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5265386fc3ac29e4c580d37ed470859c"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00172.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a> (vec< 3, T, Q > const &ColorD65XYZ)</td></tr>
|
||||
<tr class="memdesc:ga5265386fc3ac29e4c580d37ed470859c"><td class="mdescLeft"> </td><td class="mdescRight">Convert a D65 YUV color to linear sRGB. <br /></td></tr>
|
||||
<tr class="separator:ga5265386fc3ac29e4c580d37ed470859c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1522ba180e3d83d554a734056da031f9"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00172.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a> (vec< 3, T, Q > const &ColorLinearSRGB)</td></tr>
|
||||
<tr class="memdesc:ga1522ba180e3d83d554a734056da031f9"><td class="mdescLeft"> </td><td class="mdescRight">Convert a linear sRGB color to D50 YUV. <br /></td></tr>
|
||||
<tr class="separator:ga1522ba180e3d83d554a734056da031f9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf9e130d9d4ccf51cc99317de7449f369"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00172.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a> (vec< 3, T, Q > const &ColorLinearSRGB)</td></tr>
|
||||
<tr class="memdesc:gaf9e130d9d4ccf51cc99317de7449f369"><td class="mdescLeft"> </td><td class="mdescRight">Convert a linear sRGB color to D65 YUV. <br /></td></tr>
|
||||
<tr class="separator:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00172.html">GLM_GTX_color_encoding</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
|
||||
<dd>
|
||||
<a class="el" href="a00172.html" title="Include <glm/gtx/color_encoding.hpp> to use the features of this extension. ">GLM_GTX_color_encoding</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00011_source.html">color_encoding.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,135 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_encoding.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">color_encoding.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00011.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependencies</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <limits></span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_color_encoding extension included")</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00172.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorLinearSRGB);</div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00172.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorLinearSRGB);</div>
|
||||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00172.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorD65XYZ);</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00172.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorD65XYZ);</div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> } <span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="preprocessor">#include "color_encoding.inl"</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00172_html_ga1522ba180e3d83d554a734056da031f9"><div class="ttname"><a href="a00172.html#ga1522ba180e3d83d554a734056da031f9">glm::convertLinearSRGBToD50XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ(vec< 3, T, Q > const &ColorLinearSRGB)</div><div class="ttdoc">Convert a linear sRGB color to D50 YUV. </div></div>
|
||||
<div class="ttc" id="a00172_html_ga5265386fc3ac29e4c580d37ed470859c"><div class="ttname"><a href="a00172.html#ga5265386fc3ac29e4c580d37ed470859c">glm::convertD65XYZToLinearSRGB</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB(vec< 3, T, Q > const &ColorD65XYZ)</div><div class="ttdoc">Convert a D65 YUV color to linear sRGB. </div></div>
|
||||
<div class="ttc" id="a00172_html_gad12f4f65022b2c80e33fcba2ced0dc48"><div class="ttname"><a href="a00172.html#gad12f4f65022b2c80e33fcba2ced0dc48">glm::convertD65XYZToD50XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ(vec< 3, T, Q > const &ColorD65XYZ)</div><div class="ttdoc">Convert a D65 YUV color to D50 YUV. </div></div>
|
||||
<div class="ttc" id="a00172_html_gaf9e130d9d4ccf51cc99317de7449f369"><div class="ttname"><a href="a00172.html#gaf9e130d9d4ccf51cc99317de7449f369">glm::convertLinearSRGBToD65XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ(vec< 3, T, Q > const &ColorLinearSRGB)</div><div class="ttdoc">Convert a linear sRGB color to D65 YUV. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,134 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_7997edb062bdde9a99cb6835d42b0d9d.html">gtc</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">gtc/color_space.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00150.html">GLM_GTC_color_space</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00012_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga42239e7b3da900f7ef37cec7e2476579"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga42239e7b3da900f7ef37cec7e2476579"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#ga42239e7b3da900f7ef37cec7e2476579">convertLinearToSRGB</a> (vec< L, T, Q > const &ColorLinear)</td></tr>
|
||||
<tr class="memdesc:ga42239e7b3da900f7ef37cec7e2476579"><td class="mdescLeft"> </td><td class="mdescRight">Convert a linear color to sRGB color using a standard gamma correction. <a href="a00150.html#ga42239e7b3da900f7ef37cec7e2476579">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga42239e7b3da900f7ef37cec7e2476579"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a> (vec< L, T, Q > const &ColorLinear, T Gamma)</td></tr>
|
||||
<tr class="memdesc:gaace0a21167d13d26116c283009af57f6"><td class="mdescLeft"> </td><td class="mdescRight">Convert a linear color to sRGB color using a custom gamma correction. <a href="a00150.html#gaace0a21167d13d26116c283009af57f6">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaace0a21167d13d26116c283009af57f6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#ga16c798b7a226b2c3079dedc55083d187">convertSRGBToLinear</a> (vec< L, T, Q > const &ColorSRGB)</td></tr>
|
||||
<tr class="memdesc:ga16c798b7a226b2c3079dedc55083d187"><td class="mdescLeft"> </td><td class="mdescRight">Convert a sRGB color to linear color using a standard gamma correction. <a href="a00150.html#ga16c798b7a226b2c3079dedc55083d187">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga16c798b7a226b2c3079dedc55083d187"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad1b91f27a9726c9cb403f9fee6e2e200"></a>
|
||||
template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00150.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a> (vec< L, T, Q > const &ColorSRGB, T Gamma)</td></tr>
|
||||
<tr class="memdesc:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="mdescLeft"> </td><td class="mdescRight">Convert a sRGB color to linear color using a custom gamma correction. <br /></td></tr>
|
||||
<tr class="separator:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00150.html">GLM_GTC_color_space</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
|
||||
<dd>
|
||||
<a class="el" href="a00150.html" title="Include <glm/gtc/color_space.hpp> to use the features of this extension. ">GLM_GTC_color_space</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00012_source.html">gtc/color_space.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,136 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_7997edb062bdde9a99cb6835d42b0d9d.html">gtc</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">gtc/color_space.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00012.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependencies</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../exponential.hpp"</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "../vec4.hpp"</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <limits></span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_color_space extension included")</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> {</div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00150.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorLinear);</div>
|
||||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00150.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorLinear, T Gamma);</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00150.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorSRGB);</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="comment">// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb</span></div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00150.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorSRGB, T Gamma);</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> } <span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "color_space.inl"</span></div>
|
||||
<div class="ttc" id="a00150_html_gaace0a21167d13d26116c283009af57f6"><div class="ttname"><a href="a00150.html#gaace0a21167d13d26116c283009af57f6">glm::convertLinearToSRGB</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)</div><div class="ttdoc">Convert a linear color to sRGB color using a custom gamma correction. </div></div>
|
||||
<div class="ttc" id="a00150_html_gad1b91f27a9726c9cb403f9fee6e2e200"><div class="ttname"><a href="a00150.html#gad1b91f27a9726c9cb403f9fee6e2e200">glm::convertSRGBToLinear</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)</div><div class="ttdoc">Convert a sRGB color to linear color using a custom gamma correction. </div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,139 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">gtx/color_space.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00173.html">GLM_GTX_color_space</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00013_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#ga789802bec2d4fe0f9741c731b4a8a7d8">hsvColor</a> (vec< 3, T, Q > const &rgbValue)</td></tr>
|
||||
<tr class="memdesc:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="mdescLeft"> </td><td class="mdescRight">Converts a color from RGB color space to its color in HSV color space. <a href="a00173.html#ga789802bec2d4fe0f9741c731b4a8a7d8">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad028e0a4f1a9c812b39439b746295b34"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gad028e0a4f1a9c812b39439b746295b34"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#gad028e0a4f1a9c812b39439b746295b34">luminosity</a> (vec< 3, T, Q > const &color)</td></tr>
|
||||
<tr class="memdesc:gad028e0a4f1a9c812b39439b746295b34"><td class="mdescLeft"> </td><td class="mdescRight">Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. <a href="a00173.html#gad028e0a4f1a9c812b39439b746295b34">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad028e0a4f1a9c812b39439b746295b34"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5f9193be46f45f0655c05a0cdca006db"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga5f9193be46f45f0655c05a0cdca006db"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a> (vec< 3, T, Q > const &hsvValue)</td></tr>
|
||||
<tr class="memdesc:ga5f9193be46f45f0655c05a0cdca006db"><td class="mdescLeft"> </td><td class="mdescRight">Converts a color from HSV color space to its color in RGB color space. <a href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga5f9193be46f45f0655c05a0cdca006db"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga01a97152b44e1550edcac60bd849e884"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
|
||||
<tr class="memitem:ga01a97152b44e1550edcac60bd849e884"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat< 4, 4, T, defaultp > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#ga01a97152b44e1550edcac60bd849e884">saturation</a> (T const s)</td></tr>
|
||||
<tr class="memdesc:ga01a97152b44e1550edcac60bd849e884"><td class="mdescLeft"> </td><td class="mdescRight">Build a saturation matrix. <a href="a00173.html#ga01a97152b44e1550edcac60bd849e884">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga01a97152b44e1550edcac60bd849e884"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2156cea600e90148ece5bc96fd6db43a"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2156cea600e90148ece5bc96fd6db43a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#ga2156cea600e90148ece5bc96fd6db43a">saturation</a> (T const s, vec< 3, T, Q > const &color)</td></tr>
|
||||
<tr class="memdesc:ga2156cea600e90148ece5bc96fd6db43a"><td class="mdescLeft"> </td><td class="mdescRight">Modify the saturation of a color. <a href="a00173.html#ga2156cea600e90148ece5bc96fd6db43a">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2156cea600e90148ece5bc96fd6db43a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaba0eacee0736dae860e9371cc1ae4785"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaba0eacee0736dae860e9371cc1ae4785"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a> (T const s, vec< 4, T, Q > const &color)</td></tr>
|
||||
<tr class="memdesc:gaba0eacee0736dae860e9371cc1ae4785"><td class="mdescLeft"> </td><td class="mdescRight">Modify the saturation of a color. <a href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaba0eacee0736dae860e9371cc1ae4785"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00173.html">GLM_GTX_color_space</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00013_source.html">gtx/color_space.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,150 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">gtx/color_space.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00013.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># error "GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space extension included")</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>(</div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& hsvValue);</div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00173.html#ga789802bec2d4fe0f9741c731b4a8a7d8">hsvColor</a>(</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<3, T, Q> <span class="keyword">const</span>& rgbValue);</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  GLM_FUNC_DECL mat<4, 4, T, defaultp> <a class="code" href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  T <span class="keyword">const</span> s);</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  T <span class="keyword">const</span> s,</div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  vec<3, T, Q> <span class="keyword">const</span>& color);</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLM_FUNC_DECL vec<4, T, Q> <a class="code" href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  T <span class="keyword">const</span> s,</div>
|
||||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  vec<4, T, Q> <span class="keyword">const</span>& color);</div>
|
||||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GLM_FUNC_DECL T <a class="code" href="a00173.html#gad028e0a4f1a9c812b39439b746295b34">luminosity</a>(</div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  vec<3, T, Q> <span class="keyword">const</span>& color);</div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
|
||||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#include "color_space.inl"</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00173_html_gaba0eacee0736dae860e9371cc1ae4785"><div class="ttname"><a href="a00173.html#gaba0eacee0736dae860e9371cc1ae4785">glm::saturation</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 4, T, Q > saturation(T const s, vec< 4, T, Q > const &color)</div><div class="ttdoc">Modify the saturation of a color. </div></div>
|
||||
<div class="ttc" id="a00173_html_ga5f9193be46f45f0655c05a0cdca006db"><div class="ttname"><a href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
|
||||
<div class="ttc" id="a00173_html_ga789802bec2d4fe0f9741c731b4a8a7d8"><div class="ttname"><a href="a00173.html#ga789802bec2d4fe0f9741c731b4a8a7d8">glm::hsvColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > hsvColor(vec< 3, T, Q > const &rgbValue)</div><div class="ttdoc">Converts a color from RGB color space to its color in HSV color space. </div></div>
|
||||
<div class="ttc" id="a00173_html_gad028e0a4f1a9c812b39439b746295b34"><div class="ttname"><a href="a00173.html#gad028e0a4f1a9c812b39439b746295b34">glm::luminosity</a></div><div class="ttdeci">GLM_FUNC_DECL T luminosity(vec< 3, T, Q > const &color)</div><div class="ttdoc">Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,131 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space_YCoCg.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">color_space_YCoCg.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00174.html">GLM_GTX_color_space_YCoCg</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00014_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00174.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">rgb2YCoCg</a> (vec< 3, T, Q > const &rgbColor)</td></tr>
|
||||
<tr class="memdesc:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from RGB color space to YCoCg color space. <a href="a00174.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00174.html#ga0389772e44ca0fd2ba4a79bdd8efe898">rgb2YCoCgR</a> (vec< 3, T, Q > const &rgbColor)</td></tr>
|
||||
<tr class="memdesc:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from RGB color space to YCoCgR color space. <a href="a00174.html#ga0389772e44ca0fd2ba4a79bdd8efe898">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga163596b804c7241810b2534a99eb1343"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga163596b804c7241810b2534a99eb1343"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00174.html#ga163596b804c7241810b2534a99eb1343">YCoCg2rgb</a> (vec< 3, T, Q > const &YCoCgColor)</td></tr>
|
||||
<tr class="memdesc:ga163596b804c7241810b2534a99eb1343"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from YCoCg color space to RGB color space. <a href="a00174.html#ga163596b804c7241810b2534a99eb1343">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga163596b804c7241810b2534a99eb1343"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf8d30574c8576838097d8e20c295384a"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf8d30574c8576838097d8e20c295384a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00174.html#gaf8d30574c8576838097d8e20c295384a">YCoCgR2rgb</a> (vec< 3, T, Q > const &YCoCgColor)</td></tr>
|
||||
<tr class="memdesc:gaf8d30574c8576838097d8e20c295384a"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from YCoCgR color space to RGB color space. <a href="a00174.html#gaf8d30574c8576838097d8e20c295384a">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaf8d30574c8576838097d8e20c295384a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00174.html">GLM_GTX_color_space_YCoCg</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00014_source.html">color_space_YCoCg.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,141 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: color_space_YCoCg.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">color_space_YCoCg.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00014.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># error "GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00174.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">rgb2YCoCg</a>(</div>
|
||||
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& <a class="code" href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>);</div>
|
||||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
||||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00174.html#ga163596b804c7241810b2534a99eb1343">YCoCg2rgb</a>(</div>
|
||||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<3, T, Q> <span class="keyword">const</span>& YCoCgColor);</div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
||||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00174.html#ga0389772e44ca0fd2ba4a79bdd8efe898">rgb2YCoCgR</a>(</div>
|
||||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  vec<3, T, Q> <span class="keyword">const</span>& <a class="code" href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>);</div>
|
||||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div>
|
||||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00174.html#gaf8d30574c8576838097d8e20c295384a">YCoCgR2rgb</a>(</div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  vec<3, T, Q> <span class="keyword">const</span>& YCoCgColor);</div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
|
||||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div>
|
||||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "color_space_YCoCg.inl"</span></div>
|
||||
<div class="ttc" id="a00174_html_ga0389772e44ca0fd2ba4a79bdd8efe898"><div class="ttname"><a href="a00174.html#ga0389772e44ca0fd2ba4a79bdd8efe898">glm::rgb2YCoCgR</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR(vec< 3, T, Q > const &rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCgR color space. </div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00174_html_ga163596b804c7241810b2534a99eb1343"><div class="ttname"><a href="a00174.html#ga163596b804c7241810b2534a99eb1343">glm::YCoCg2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb(vec< 3, T, Q > const &YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCg color space to RGB color space. </div></div>
|
||||
<div class="ttc" id="a00174_html_gaf8d30574c8576838097d8e20c295384a"><div class="ttname"><a href="a00174.html#gaf8d30574c8576838097d8e20c295384a">glm::YCoCgR2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb(vec< 3, T, Q > const &YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCgR color space to RGB color space. </div></div>
|
||||
<div class="ttc" id="a00173_html_ga5f9193be46f45f0655c05a0cdca006db"><div class="ttname"><a href="a00173.html#ga5f9193be46f45f0655c05a0cdca006db">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
|
||||
<div class="ttc" id="a00174_html_ga0606353ec2a9b9eaa84f1b02ec391bc5"><div class="ttname"><a href="a00174.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">glm::rgb2YCoCg</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg(vec< 3, T, Q > const &rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCg color space. </div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,275 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: common.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">common.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00143.html">Core features</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00015_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ga693d77696ff36572a0da79efec965acd"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga693d77696ff36572a0da79efec965acd"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga693d77696ff36572a0da79efec965acd">abs</a> (genType x)</td></tr>
|
||||
<tr class="memdesc:ga693d77696ff36572a0da79efec965acd"><td class="mdescLeft"> </td><td class="mdescRight">Returns x if x >= 0; otherwise, it returns -x. <a href="a00140.html#ga693d77696ff36572a0da79efec965acd">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga693d77696ff36572a0da79efec965acd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3e141c9738c73d3e581efa471dba8b4c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga3e141c9738c73d3e581efa471dba8b4c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga3e141c9738c73d3e581efa471dba8b4c">abs</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga3e141c9738c73d3e581efa471dba8b4c"><td class="mdescLeft"> </td><td class="mdescRight">Returns x if x >= 0; otherwise, it returns -x. <a href="a00140.html#ga3e141c9738c73d3e581efa471dba8b4c">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga3e141c9738c73d3e581efa471dba8b4c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gafb9d2a645a23aca12d4d6de0104b7657">ceil</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:gafb9d2a645a23aca12d4d6de0104b7657"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer that is greater than or equal to x. <a href="a00140.html#gafb9d2a645a23aca12d4d6de0104b7657">More...</a><br /></td></tr>
|
||||
<tr class="separator:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga93bce26c7d80d30a62f5c508f8498a6c"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga93bce26c7d80d30a62f5c508f8498a6c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga93bce26c7d80d30a62f5c508f8498a6c">clamp</a> (genType x, genType minVal, genType maxVal)</td></tr>
|
||||
<tr class="memdesc:ga93bce26c7d80d30a62f5c508f8498a6c"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00140.html#ga93bce26c7d80d30a62f5c508f8498a6c">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga93bce26c7d80d30a62f5c508f8498a6c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gabff13e6547edac08f52b4133ff4bf183"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gabff13e6547edac08f52b4133ff4bf183"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gabff13e6547edac08f52b4133ff4bf183">clamp</a> (vec< L, T, Q > const &x, T minVal, T maxVal)</td></tr>
|
||||
<tr class="memdesc:gabff13e6547edac08f52b4133ff4bf183"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00140.html#gabff13e6547edac08f52b4133ff4bf183">More...</a><br /></td></tr>
|
||||
<tr class="separator:gabff13e6547edac08f52b4133ff4bf183"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga748333282a6f2f87762c0a4739c8c364"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga748333282a6f2f87762c0a4739c8c364"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">clamp</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)</td></tr>
|
||||
<tr class="memdesc:ga748333282a6f2f87762c0a4739c8c364"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga748333282a6f2f87762c0a4739c8c364"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga1425c1c3160ec51214b03a0469a3013d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ga1425c1c3160ec51214b03a0469a3013d">floatBitsToInt</a> (float const &v)</td></tr>
|
||||
<tr class="memdesc:ga1425c1c3160ec51214b03a0469a3013d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a signed integer value representing the encoding of a floating-point value. <a href="a00140.html#ga1425c1c3160ec51214b03a0469a3013d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga1425c1c3160ec51214b03a0469a3013d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, int, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a> (vec< L, float, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="mdescLeft"> </td><td class="mdescRight">Returns a signed integer value representing the encoding of a floating-point value. <a href="a00140.html#ga99f7d62f78ac5ea3b49bae715c9488ed">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga70e0271c34af52f3100c7960e18c3f2b"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ga70e0271c34af52f3100c7960e18c3f2b">floatBitsToUint</a> (float const &v)</td></tr>
|
||||
<tr class="memdesc:ga70e0271c34af52f3100c7960e18c3f2b"><td class="mdescLeft"> </td><td class="mdescRight">Returns a unsigned integer value representing the encoding of a floating-point value. <a href="a00140.html#ga70e0271c34af52f3100c7960e18c3f2b">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga70e0271c34af52f3100c7960e18c3f2b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, uint, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a> (vec< L, float, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="mdescLeft"> </td><td class="mdescRight">Returns a unsigned integer value representing the encoding of a floating-point value. <a href="a00140.html#ga49418ba4c8a60fbbb5d57b705f3e26db">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer that is less then or equal to x. <a href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gad0f444d4b81cc53c3b6edf5aa25078c2">fma</a> (genType const &a, genType const &b, genType const &c)</td></tr>
|
||||
<tr class="memdesc:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="mdescLeft"> </td><td class="mdescRight">Computes and returns a * b + c. <a href="a00140.html#gad0f444d4b81cc53c3b6edf5aa25078c2">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga8ba89e40e55ae5cdf228548f9b7639c7">fract</a> (genType x)</td></tr>
|
||||
<tr class="memdesc:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="mdescLeft"> </td><td class="mdescRight">Return x - floor(x). <a href="a00140.html#ga8ba89e40e55ae5cdf228548f9b7639c7">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2df623004f634b440d61e018d62c751b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2df623004f634b440d61e018d62c751b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga2df623004f634b440d61e018d62c751b">fract</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga2df623004f634b440d61e018d62c751b"><td class="mdescLeft"> </td><td class="mdescRight">Return x - floor(x). <a href="a00140.html#ga2df623004f634b440d61e018d62c751b">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2df623004f634b440d61e018d62c751b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga20620e83544d1a988857a3bc4ebe0e1d"><td class="memTemplParams" colspan="2">template<typename genType , typename genIType > </td></tr>
|
||||
<tr class="memitem:ga20620e83544d1a988857a3bc4ebe0e1d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga20620e83544d1a988857a3bc4ebe0e1d">frexp</a> (genType const &x, genIType &exp)</td></tr>
|
||||
<tr class="memdesc:ga20620e83544d1a988857a3bc4ebe0e1d"><td class="mdescLeft"> </td><td class="mdescRight">Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) <a href="a00140.html#ga20620e83544d1a988857a3bc4ebe0e1d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga20620e83544d1a988857a3bc4ebe0e1d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4">intBitsToFloat</a> (int const &v)</td></tr>
|
||||
<tr class="memdesc:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. <a href="a00140.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, float, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a> (vec< L, int, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. <a href="a00140.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2885587c23a106301f20443896365b62"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2885587c23a106301f20443896365b62"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga2885587c23a106301f20443896365b62">isinf</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga2885587c23a106301f20443896365b62"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. <a href="a00140.html#ga2885587c23a106301f20443896365b62">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2885587c23a106301f20443896365b62"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga29ef934c00306490de837b4746b4e14d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga29ef934c00306490de837b4746b4e14d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga29ef934c00306490de837b4746b4e14d">isnan</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga29ef934c00306490de837b4746b4e14d"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. <a href="a00140.html#ga29ef934c00306490de837b4746b4e14d">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga29ef934c00306490de837b4746b4e14d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga52e319d7289b849ec92055abd4830533"><td class="memTemplParams" colspan="2">template<typename genType , typename genIType > </td></tr>
|
||||
<tr class="memitem:ga52e319d7289b849ec92055abd4830533"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga52e319d7289b849ec92055abd4830533">ldexp</a> (genType const &x, genIType const &exp)</td></tr>
|
||||
<tr class="memdesc:ga52e319d7289b849ec92055abd4830533"><td class="mdescLeft"> </td><td class="mdescRight">Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) <a href="a00140.html#ga52e319d7289b849ec92055abd4830533">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga52e319d7289b849ec92055abd4830533"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga98caa7f95a94c86a86ebce893a45326c"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga98caa7f95a94c86a86ebce893a45326c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga98caa7f95a94c86a86ebce893a45326c">max</a> (genType x, genType y)</td></tr>
|
||||
<tr class="memdesc:ga98caa7f95a94c86a86ebce893a45326c"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00140.html#ga98caa7f95a94c86a86ebce893a45326c">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga98caa7f95a94c86a86ebce893a45326c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae8b0964d30deabd0867b8d7ac44f067e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gae8b0964d30deabd0867b8d7ac44f067e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gae8b0964d30deabd0867b8d7ac44f067e">max</a> (vec< L, T, Q > const &x, T y)</td></tr>
|
||||
<tr class="memdesc:gae8b0964d30deabd0867b8d7ac44f067e"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00140.html#gae8b0964d30deabd0867b8d7ac44f067e">More...</a><br /></td></tr>
|
||||
<tr class="separator:gae8b0964d30deabd0867b8d7ac44f067e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad48b723358c68d45477c22ff0101985e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gad48b723358c68d45477c22ff0101985e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gad48b723358c68d45477c22ff0101985e">max</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
||||
<tr class="memdesc:gad48b723358c68d45477c22ff0101985e"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00140.html#gad48b723358c68d45477c22ff0101985e">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad48b723358c68d45477c22ff0101985e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2c2bde1cec025b7ddff83c74a1113719"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga2c2bde1cec025b7ddff83c74a1113719"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga2c2bde1cec025b7ddff83c74a1113719">min</a> (genType x, genType y)</td></tr>
|
||||
<tr class="memdesc:ga2c2bde1cec025b7ddff83c74a1113719"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00140.html#ga2c2bde1cec025b7ddff83c74a1113719">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2c2bde1cec025b7ddff83c74a1113719"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2d274e8b537c173dba983331a2620736"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga2d274e8b537c173dba983331a2620736"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga2d274e8b537c173dba983331a2620736">min</a> (vec< L, T, Q > const &x, T y)</td></tr>
|
||||
<tr class="memdesc:ga2d274e8b537c173dba983331a2620736"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00140.html#ga2d274e8b537c173dba983331a2620736">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga2d274e8b537c173dba983331a2620736"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga734a374ca5c808e7bd9f74b6acfd7478"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga734a374ca5c808e7bd9f74b6acfd7478"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">min</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
||||
<tr class="memdesc:ga734a374ca5c808e7bd9f74b6acfd7478"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga734a374ca5c808e7bd9f74b6acfd7478"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8e93f374aae27d1a88b921860351f8d4"><td class="memTemplParams" colspan="2">template<typename genTypeT , typename genTypeU > </td></tr>
|
||||
<tr class="memitem:ga8e93f374aae27d1a88b921860351f8d4"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genTypeT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a> (genTypeT x, genTypeT y, genTypeU a)</td></tr>
|
||||
<tr class="memdesc:ga8e93f374aae27d1a88b921860351f8d4"><td class="mdescLeft"> </td><td class="mdescRight">If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. <a href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8e93f374aae27d1a88b921860351f8d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga12201563ef902e3b07e0d1d7656efdb1"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga12201563ef902e3b07e0d1d7656efdb1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga12201563ef902e3b07e0d1d7656efdb1">mod</a> (genType x, genType y)</td></tr>
|
||||
<tr class="memdesc:ga12201563ef902e3b07e0d1d7656efdb1"><td class="mdescLeft"> </td><td class="mdescRight">Modulus. <a href="a00140.html#ga12201563ef902e3b07e0d1d7656efdb1">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga12201563ef902e3b07e0d1d7656efdb1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad32bcde4977c7a42c80468f4061a1f55"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gad32bcde4977c7a42c80468f4061a1f55"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gad32bcde4977c7a42c80468f4061a1f55">mod</a> (vec< L, T, Q > const &x, T y)</td></tr>
|
||||
<tr class="memdesc:gad32bcde4977c7a42c80468f4061a1f55"><td class="mdescLeft"> </td><td class="mdescRight">Modulus. <a href="a00140.html#gad32bcde4977c7a42c80468f4061a1f55">More...</a><br /></td></tr>
|
||||
<tr class="separator:gad32bcde4977c7a42c80468f4061a1f55"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5f8acc481ba553dc0e6be1aedf1ee61c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga5f8acc481ba553dc0e6be1aedf1ee61c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">mod</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
||||
<tr class="memdesc:ga5f8acc481ba553dc0e6be1aedf1ee61c"><td class="mdescLeft"> </td><td class="mdescRight">Modulus. <a href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga5f8acc481ba553dc0e6be1aedf1ee61c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga85e33f139b8db1b39b590a5713b9e679"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga85e33f139b8db1b39b590a5713b9e679"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga85e33f139b8db1b39b590a5713b9e679">modf</a> (genType x, genType &i)</td></tr>
|
||||
<tr class="memdesc:ga85e33f139b8db1b39b590a5713b9e679"><td class="mdescLeft"> </td><td class="mdescRight">Returns the fractional part of x and sets i to the integer part (as a whole number floating point value). <a href="a00140.html#ga85e33f139b8db1b39b590a5713b9e679">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga85e33f139b8db1b39b590a5713b9e679"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gafa03aca8c4713e1cc892aa92ca135a7e">round</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x. <a href="a00140.html#gafa03aca8c4713e1cc892aa92ca135a7e">More...</a><br /></td></tr>
|
||||
<tr class="separator:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga76b81785045a057989a84d99aeeb1578"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga76b81785045a057989a84d99aeeb1578"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga76b81785045a057989a84d99aeeb1578">roundEven</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga76b81785045a057989a84d99aeeb1578"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x. <a href="a00140.html#ga76b81785045a057989a84d99aeeb1578">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga76b81785045a057989a84d99aeeb1578"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga1e2e5cfff800056540e32f6c9b604b28">sign</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga1e2e5cfff800056540e32f6c9b604b28"><td class="mdescLeft"> </td><td class="mdescRight">Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. <a href="a00140.html#ga1e2e5cfff800056540e32f6c9b604b28">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a> (genType edge0, genType edge1, genType x)</td></tr>
|
||||
<tr class="memdesc:ga562edf7eca082cc5b7a0aaf180436daf"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1. <a href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga015a1261ff23e12650211aa872863cce"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga015a1261ff23e12650211aa872863cce"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga015a1261ff23e12650211aa872863cce">step</a> (genType edge, genType x)</td></tr>
|
||||
<tr class="memdesc:ga015a1261ff23e12650211aa872863cce"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. <a href="a00140.html#ga015a1261ff23e12650211aa872863cce">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga015a1261ff23e12650211aa872863cce"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8f9a911a48ef244b51654eaefc81c551"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga8f9a911a48ef244b51654eaefc81c551"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga8f9a911a48ef244b51654eaefc81c551">step</a> (T edge, vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:ga8f9a911a48ef244b51654eaefc81c551"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0. <a href="a00140.html#ga8f9a911a48ef244b51654eaefc81c551">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga8f9a911a48ef244b51654eaefc81c551"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a> (vec< L, T, Q > const &edge, vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0. <a href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf9375e3e06173271d49e6ffa3a334259"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf9375e3e06173271d49e6ffa3a334259"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#gaf9375e3e06173271d49e6ffa3a334259">trunc</a> (vec< L, T, Q > const &x)</td></tr>
|
||||
<tr class="memdesc:gaf9375e3e06173271d49e6ffa3a334259"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x. <a href="a00140.html#gaf9375e3e06173271d49e6ffa3a334259">More...</a><br /></td></tr>
|
||||
<tr class="separator:gaf9375e3e06173271d49e6ffa3a334259"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gab2bae0d15dcdca6093f88f76b3975d97"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00140.html#gab2bae0d15dcdca6093f88f76b3975d97">uintBitsToFloat</a> (uint const &v)</td></tr>
|
||||
<tr class="memdesc:gab2bae0d15dcdca6093f88f76b3975d97"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. <a href="a00140.html#gab2bae0d15dcdca6093f88f76b3975d97">More...</a><br /></td></tr>
|
||||
<tr class="separator:gab2bae0d15dcdca6093f88f76b3975d97"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, float, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00140.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a> (vec< L, uint, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:ga97f46b5f7b42fe44482e13356eb394ae"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. <a href="a00140.html#ga97f46b5f7b42fe44482e13356eb394ae">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00143.html">Core features</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a> </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00015_source.html">common.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,277 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: common.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">common.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00015.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="a00094.html">detail/setup.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "<a class="code" href="a00082.html">detail/qualifier.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="a00106.html">detail/type_int.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="a00002.html">detail/_fixes.hpp</a>"</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
|
||||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga3e141c9738c73d3e581efa471dba8b4c">abs</a>(genType x);</div>
|
||||
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga3e141c9738c73d3e581efa471dba8b4c">abs</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga1e2e5cfff800056540e32f6c9b604b28">sign</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
|
||||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
|
||||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gaf9375e3e06173271d49e6ffa3a334259">trunc</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
|
||||
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gafa03aca8c4713e1cc892aa92ca135a7e">round</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div>
|
||||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga76b81785045a057989a84d99aeeb1578">roundEven</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gafb9d2a645a23aca12d4d6de0104b7657">ceil</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
|
||||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga2df623004f634b440d61e018d62c751b">fract</a>(genType x);</div>
|
||||
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div>
|
||||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga2df623004f634b440d61e018d62c751b">fract</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div>
|
||||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">mod</a>(genType x, genType y);</div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
|
||||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">mod</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
||||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div>
|
||||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">mod</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
||||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga85e33f139b8db1b39b590a5713b9e679">modf</a>(genType x, genType& i);</div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">min</a>(genType x, genType y);</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">min</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">min</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#gad48b723358c68d45477c22ff0101985e">max</a>(genType x, genType y);</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> </div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gad48b723358c68d45477c22ff0101985e">max</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> </div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gad48b723358c68d45477c22ff0101985e">max</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> </div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">clamp</a>(genType x, genType minVal, genType maxVal);</div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">clamp</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T minVal, T maxVal);</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">clamp</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& minVal, vec<L, T, Q> <span class="keyword">const</span>& maxVal);</div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genTypeT, <span class="keyword">typename</span> genTypeU></div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  GLM_FUNC_DECL genTypeT <a class="code" href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(genTypeT x, genTypeT y, genTypeU a);</div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& a);</div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y, U a);</div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(genType edge, genType x);</div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> </div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(T edge, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> </div>
|
||||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(vec<L, T, Q> <span class="keyword">const</span>& edge, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div>
|
||||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(genType edge0, genType edge1, genType x);</div>
|
||||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div>
|
||||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(T edge0, T edge1, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> </div>
|
||||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(vec<L, T, Q> <span class="keyword">const</span>& edge0, vec<L, T, Q> <span class="keyword">const</span>& edge1, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div>
|
||||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  GLM_FUNC_DECL vec<L, bool, Q> <a class="code" href="a00140.html#ga29ef934c00306490de837b4746b4e14d">isnan</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> </div>
|
||||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  GLM_FUNC_DECL vec<L, bool, Q> <a class="code" href="a00140.html#ga2885587c23a106301f20443896365b62">isinf</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div>
|
||||
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  GLM_FUNC_DECL <span class="keywordtype">int</span> <a class="code" href="a00140.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a>(<span class="keywordtype">float</span> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div>
|
||||
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
||||
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  GLM_FUNC_DECL vec<L, int, Q> <a class="code" href="a00140.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a>(vec<L, float, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div>
|
||||
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  GLM_FUNC_DECL <a class="code" href="a00145.html#ga91ad9478d81a7aaf2593e8d9c3d06a14">uint</a> <a class="code" href="a00140.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a>(<span class="keywordtype">float</span> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> </div>
|
||||
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
||||
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  GLM_FUNC_DECL vec<L, uint, Q> <a class="code" href="a00140.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a>(vec<L, float, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> </div>
|
||||
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  GLM_FUNC_DECL <span class="keywordtype">float</span> <a class="code" href="a00140.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a>(<span class="keywordtype">int</span> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> </div>
|
||||
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
||||
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  GLM_FUNC_DECL vec<L, float, Q> <a class="code" href="a00140.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a>(vec<L, int, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> </div>
|
||||
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  GLM_FUNC_DECL <span class="keywordtype">float</span> <a class="code" href="a00140.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a>(<a class="code" href="a00145.html#ga91ad9478d81a7aaf2593e8d9c3d06a14">uint</a> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> </div>
|
||||
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
||||
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  GLM_FUNC_DECL vec<L, float, Q> <a class="code" href="a00140.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a>(vec<L, uint, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div>
|
||||
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
||||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#gad0f444d4b81cc53c3b6edf5aa25078c2">fma</a>(genType <span class="keyword">const</span>& a, genType <span class="keyword">const</span>& b, genType <span class="keyword">const</span>& c);</div>
|
||||
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> </div>
|
||||
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType, <span class="keyword">typename</span> genIType></div>
|
||||
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga20620e83544d1a988857a3bc4ebe0e1d">frexp</a>(genType <span class="keyword">const</span>& x, genIType& <a class="code" href="a00141.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
||||
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div>
|
||||
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType, <span class="keyword">typename</span> genIType></div>
|
||||
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  GLM_FUNC_DECL genType <a class="code" href="a00140.html#ga52e319d7289b849ec92055abd4830533">ldexp</a>(genType <span class="keyword">const</span>& x, genIType <span class="keyword">const</span>& <a class="code" href="a00141.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
||||
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div>
|
||||
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div>
|
||||
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor">#include "detail/func_common.inl"</span></div>
|
||||
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> </div>
|
||||
<div class="ttc" id="a00140_html_ga1e2e5cfff800056540e32f6c9b604b28"><div class="ttname"><a href="a00140.html#ga1e2e5cfff800056540e32f6c9b604b28">glm::sign</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > sign(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga76b81785045a057989a84d99aeeb1578"><div class="ttname"><a href="a00140.html#ga76b81785045a057989a84d99aeeb1578">glm::roundEven</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > roundEven(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x. </div></div>
|
||||
<div class="ttc" id="a00140_html_gaf9375e3e06173271d49e6ffa3a334259"><div class="ttname"><a href="a00140.html#gaf9375e3e06173271d49e6ffa3a334259">glm::trunc</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > trunc(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><div class="ttname"><a href="a00140.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">glm::intBitsToFloat</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat(vec< L, int, Q > const &v)</div><div class="ttdoc">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value...</div></div>
|
||||
<div class="ttc" id="a00140_html_gaf4a5fc81619c7d3e8b22f53d4a098c7f"><div class="ttname"><a href="a00140.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">glm::step</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)</div><div class="ttdoc">Returns 0.0 if x < edge, otherwise it returns 1.0. </div></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00140_html_gafa03aca8c4713e1cc892aa92ca135a7e"><div class="ttname"><a href="a00140.html#gafa03aca8c4713e1cc892aa92ca135a7e">glm::round</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > round(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x. </div></div>
|
||||
<div class="ttc" id="a00082_html"><div class="ttname"><a href="a00082.html">qualifier.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00140_html_gaa9d0742639e85b29c7c5de11cfd6840d"><div class="ttname"><a href="a00140.html#gaa9d0742639e85b29c7c5de11cfd6840d">glm::floor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is less then or equal to x. </div></div>
|
||||
<div class="ttc" id="a00106_html"><div class="ttname"><a href="a00106.html">type_int.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00140_html_ga97f46b5f7b42fe44482e13356eb394ae"><div class="ttname"><a href="a00140.html#ga97f46b5f7b42fe44482e13356eb394ae">glm::uintBitsToFloat</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat(vec< L, uint, Q > const &v)</div><div class="ttdoc">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value...</div></div>
|
||||
<div class="ttc" id="a00140_html_gafb9d2a645a23aca12d4d6de0104b7657"><div class="ttname"><a href="a00140.html#gafb9d2a645a23aca12d4d6de0104b7657">glm::ceil</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > ceil(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is greater than or equal to x. </div></div>
|
||||
<div class="ttc" id="a00140_html_gad0f444d4b81cc53c3b6edf5aa25078c2"><div class="ttname"><a href="a00140.html#gad0f444d4b81cc53c3b6edf5aa25078c2">glm::fma</a></div><div class="ttdeci">GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)</div><div class="ttdoc">Computes and returns a * b + c. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga99f7d62f78ac5ea3b49bae715c9488ed"><div class="ttname"><a href="a00140.html#ga99f7d62f78ac5ea3b49bae715c9488ed">glm::floatBitsToInt</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt(vec< L, float, Q > const &v)</div><div class="ttdoc">Returns a signed integer value representing the encoding of a floating-point value. </div></div>
|
||||
<div class="ttc" id="a00141_html_ga071566cadc7505455e611f2a0353f4d4"><div class="ttname"><a href="a00141.html#ga071566cadc7505455e611f2a0353f4d4">glm::exp</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)</div><div class="ttdoc">Returns the natural exponentiation of x, i.e., e^x. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga49418ba4c8a60fbbb5d57b705f3e26db"><div class="ttname"><a href="a00140.html#ga49418ba4c8a60fbbb5d57b705f3e26db">glm::floatBitsToUint</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint(vec< L, float, Q > const &v)</div><div class="ttdoc">Returns a unsigned integer value representing the encoding of a floating-point value. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga2885587c23a106301f20443896365b62"><div class="ttname"><a href="a00140.html#ga2885587c23a106301f20443896365b62">glm::isinf</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, bool, Q > isinf(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...</div></div>
|
||||
<div class="ttc" id="a00140_html_gad48b723358c68d45477c22ff0101985e"><div class="ttname"><a href="a00140.html#gad48b723358c68d45477c22ff0101985e">glm::max</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Returns y if x < y; otherwise, it returns x. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga5f8acc481ba553dc0e6be1aedf1ee61c"><div class="ttname"><a href="a00140.html#ga5f8acc481ba553dc0e6be1aedf1ee61c">glm::mod</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Modulus. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga52e319d7289b849ec92055abd4830533"><div class="ttname"><a href="a00140.html#ga52e319d7289b849ec92055abd4830533">glm::ldexp</a></div><div class="ttdeci">GLM_FUNC_DECL genType ldexp(genType const &x, genIType const &exp)</div><div class="ttdoc">Builds a floating-point number from x and the corresponding integral exponent of two in exp...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga8e93f374aae27d1a88b921860351f8d4"><div class="ttname"><a href="a00140.html#ga8e93f374aae27d1a88b921860351f8d4">glm::mix</a></div><div class="ttdeci">GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a)</div><div class="ttdoc">If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga734a374ca5c808e7bd9f74b6acfd7478"><div class="ttname"><a href="a00140.html#ga734a374ca5c808e7bd9f74b6acfd7478">glm::min</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Returns y if y < x; otherwise, it returns x. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga85e33f139b8db1b39b590a5713b9e679"><div class="ttname"><a href="a00140.html#ga85e33f139b8db1b39b590a5713b9e679">glm::modf</a></div><div class="ttdeci">GLM_FUNC_DECL genType modf(genType x, genType &i)</div><div class="ttdoc">Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga3e141c9738c73d3e581efa471dba8b4c"><div class="ttname"><a href="a00140.html#ga3e141c9738c73d3e581efa471dba8b4c">glm::abs</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > abs(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns x if x >= 0; otherwise, it returns -x. </div></div>
|
||||
<div class="ttc" id="a00140_html_ga562edf7eca082cc5b7a0aaf180436daf"><div class="ttname"><a href="a00140.html#ga562edf7eca082cc5b7a0aaf180436daf">glm::smoothstep</a></div><div class="ttdeci">GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)</div><div class="ttdoc">Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga29ef934c00306490de837b4746b4e14d"><div class="ttname"><a href="a00140.html#ga29ef934c00306490de837b4746b4e14d">glm::isnan</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, bool, Q > isnan(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...</div></div>
|
||||
<div class="ttc" id="a00094_html"><div class="ttname"><a href="a00094.html">setup.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00002_html"><div class="ttname"><a href="a00002.html">_fixes.hpp</a></div><div class="ttdoc">Core features </div></div>
|
||||
<div class="ttc" id="a00145_html_ga91ad9478d81a7aaf2593e8d9c3d06a14"><div class="ttname"><a href="a00145.html#ga91ad9478d81a7aaf2593e8d9c3d06a14">glm::uint</a></div><div class="ttdeci">unsigned int uint</div><div class="ttdoc">Unsigned integer type. </div><div class="ttdef"><b>Definition:</b> <a href="a00106_source.html#l00288">type_int.hpp:288</a></div></div>
|
||||
<div class="ttc" id="a00140_html_ga20620e83544d1a988857a3bc4ebe0e1d"><div class="ttname"><a href="a00140.html#ga20620e83544d1a988857a3bc4ebe0e1d">glm::frexp</a></div><div class="ttdeci">GLM_FUNC_DECL genType frexp(genType const &x, genIType &exp)</div><div class="ttdoc">Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two...</div></div>
|
||||
<div class="ttc" id="a00140_html_ga2df623004f634b440d61e018d62c751b"><div class="ttname"><a href="a00140.html#ga2df623004f634b440d61e018d62c751b">glm::fract</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > fract(vec< L, T, Q > const &x)</div><div class="ttdoc">Return x - floor(x). </div></div>
|
||||
<div class="ttc" id="a00140_html_ga748333282a6f2f87762c0a4739c8c364"><div class="ttname"><a href="a00140.html#ga748333282a6f2f87762c0a4739c8c364">glm::clamp</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)</div><div class="ttdoc">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,123 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: common.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">gtx/common.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00175.html">GLM_GTX_common</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00016_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:gae5e80425df9833164ad469e83b475fb4"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gae5e80425df9833164ad469e83b475fb4"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00175.html#gae5e80425df9833164ad469e83b475fb4">fmod</a> (vec< L, T, Q > const &v)</td></tr>
|
||||
<tr class="memdesc:gae5e80425df9833164ad469e83b475fb4"><td class="mdescLeft"> </td><td class="mdescRight">Similar to 'mod' but with a different rounding and integer support. <a href="a00175.html#gae5e80425df9833164ad469e83b475fb4">More...</a><br /></td></tr>
|
||||
<tr class="separator:gae5e80425df9833164ad469e83b475fb4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
||||
<tr class="memitem:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::bool_type </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00175.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">isdenormal</a> (genType const &x)</td></tr>
|
||||
<tr class="memdesc:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format. <a href="a00175.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">More...</a><br /></td></tr>
|
||||
<tr class="separator:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00175.html">GLM_GTX_common</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00016_source.html">gtx/common.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,131 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: common.hpp Source File</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="headertitle">
|
||||
<div class="title">gtx/common.hpp</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<a href="a00016.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
||||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
||||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
||||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependencies:</span></div>
|
||||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../vec2.hpp"</span></div>
|
||||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
||||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../vec4.hpp"</span></div>
|
||||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../gtc/vec1.hpp"</span></div>
|
||||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div>
|
||||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
||||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># error "GLM: GLM_GTX_common is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."</span></div>
|
||||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
|
||||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)</span></div>
|
||||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_common extension included")</span></div>
|
||||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div>
|
||||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">namespace </span><a class="code" href="a00135.html">glm</a></div>
|
||||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> {</div>
|
||||
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div>
|
||||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType> </div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLM_FUNC_DECL <span class="keyword">typename</span> genType::bool_type <a class="code" href="a00175.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">isdenormal</a>(genType <span class="keyword">const</span>& x);</div>
|
||||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
||||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
||||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00175.html#gae5e80425df9833164ad469e83b475fb4">fmod</a>(vec<L, T, Q> <span class="keyword">const</span>& v);</div>
|
||||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
||||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }<span class="comment">//namespace glm</span></div>
|
||||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
||||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "common.inl"</span></div>
|
||||
<div class="ttc" id="a00135_html"><div class="ttname"><a href="a00135.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
|
||||
<div class="ttc" id="a00175_html_gae5e80425df9833164ad469e83b475fb4"><div class="ttname"><a href="a00175.html#gae5e80425df9833164ad469e83b475fb4">glm::fmod</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > fmod(vec< L, T, Q > const &v)</div><div class="ttdoc">Similar to 'mod' but with a different rounding and integer support. </div></div>
|
||||
<div class="ttc" id="a00175_html_ga74aa7c7462245d83bd5a9edf9c6c2d91"><div class="ttname"><a href="a00175.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">glm::isdenormal</a></div><div class="ttdeci">GLM_FUNC_DECL genType::bool_type isdenormal(genType const &x)</div><div class="ttdoc">Returns true if x is a denormalized number Numbers whose absolute value is too small to be represente...</div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,443 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen 1.8.10"/>
|
||||
<title>0.9.9 API documenation: compatibility.hpp File Reference</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="dynsections.js"></script>
|
||||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="search/search.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() { init_search(); });
|
||||
</script>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr style="height: 56px;">
|
||||
<td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
|
||||
<td id="projectalign" style="padding-left: 0.5em;">
|
||||
<div id="projectname">0.9.9 API documenation
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.8.10 -->
|
||||
<script type="text/javascript">
|
||||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||||
</script>
|
||||
<div id="navrow1" class="tabs">
|
||||
<ul class="tablist">
|
||||
<li><a href="index.html"><span>Main Page</span></a></li>
|
||||
<li><a href="modules.html"><span>Modules</span></a></li>
|
||||
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
||||
<li>
|
||||
<div id="MSearchBox" class="MSearchBoxInactive">
|
||||
<span class="left">
|
||||
<img id="MSearchSelect" src="search/mag_sel.png"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
alt=""/>
|
||||
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
||||
onfocus="searchBox.OnSearchFieldFocus(true)"
|
||||
onblur="searchBox.OnSearchFieldFocus(false)"
|
||||
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
||||
</span><span class="right">
|
||||
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="navrow2" class="tabs2">
|
||||
<ul class="tablist">
|
||||
<li><a href="files.html"><span>File List</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
<ul>
|
||||
<li class="navelem"><a class="el" href="dir_934f46a345653ef2b3014a1b37a162c1.html">G:</a></li><li class="navelem"><a class="el" href="dir_98f7f9d41f9d3029bd68cf237526a774.html">Source</a></li><li class="navelem"><a class="el" href="dir_9344afb825aed5e2f5be1d2015dde43c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_45973f864e07b2505003ae343b7c8af7.html">glm</a></li><li class="navelem"><a class="el" href="dir_304be5dfae1339a7705426c0b536faf2.html">glm</a></li><li class="navelem"><a class="el" href="dir_e8f3c1046ba4b357711397765359cd18.html">gtx</a></li> </ul>
|
||||
</div>
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle">
|
||||
<div class="title">compatibility.hpp File Reference</div> </div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a class="el" href="a00176.html">GLM_GTX_compatibility</a>
|
||||
<a href="#details">More...</a></p>
|
||||
|
||||
<p><a href="a00017_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr class="memitem:gaddcd7aa2e30e61af5b38660613d3979e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaddcd7aa2e30e61af5b38660613d3979e"></a>
|
||||
typedef bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaddcd7aa2e30e61af5b38660613d3979e">bool1</a></td></tr>
|
||||
<tr class="memdesc:gaddcd7aa2e30e61af5b38660613d3979e"><td class="mdescLeft"> </td><td class="mdescRight">boolean type with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaddcd7aa2e30e61af5b38660613d3979e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga7f895c936f0c29c8729afbbf22806090"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7f895c936f0c29c8729afbbf22806090"></a>
|
||||
typedef bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga7f895c936f0c29c8729afbbf22806090">bool1x1</a></td></tr>
|
||||
<tr class="memdesc:ga7f895c936f0c29c8729afbbf22806090"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga7f895c936f0c29c8729afbbf22806090"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa09ab65ec9c3c54305ff502e2b1fe6d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa09ab65ec9c3c54305ff502e2b1fe6d9"></a>
|
||||
typedef vec< 2, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9">bool2</a></td></tr>
|
||||
<tr class="memdesc:gaa09ab65ec9c3c54305ff502e2b1fe6d9"><td class="mdescLeft"> </td><td class="mdescRight">boolean type with 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaa09ab65ec9c3c54305ff502e2b1fe6d9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gadb3703955e513632f98ba12fe051ba3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gadb3703955e513632f98ba12fe051ba3e"></a>
|
||||
typedef mat< 2, 2, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gadb3703955e513632f98ba12fe051ba3e">bool2x2</a></td></tr>
|
||||
<tr class="memdesc:gadb3703955e513632f98ba12fe051ba3e"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gadb3703955e513632f98ba12fe051ba3e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga9ae6ee155d0f90cb1ae5b6c4546738a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ae6ee155d0f90cb1ae5b6c4546738a0"></a>
|
||||
typedef mat< 2, 3, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0">bool2x3</a></td></tr>
|
||||
<tr class="memdesc:ga9ae6ee155d0f90cb1ae5b6c4546738a0"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga9ae6ee155d0f90cb1ae5b6c4546738a0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4d7fa65be8e8e4ad6d920b45c44e471f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4d7fa65be8e8e4ad6d920b45c44e471f"></a>
|
||||
typedef mat< 2, 4, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga4d7fa65be8e8e4ad6d920b45c44e471f">bool2x4</a></td></tr>
|
||||
<tr class="memdesc:ga4d7fa65be8e8e4ad6d920b45c44e471f"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga4d7fa65be8e8e4ad6d920b45c44e471f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga99629f818737f342204071ef8296b2ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga99629f818737f342204071ef8296b2ed"></a>
|
||||
typedef vec< 3, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga99629f818737f342204071ef8296b2ed">bool3</a></td></tr>
|
||||
<tr class="memdesc:ga99629f818737f342204071ef8296b2ed"><td class="mdescLeft"> </td><td class="mdescRight">boolean type with 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga99629f818737f342204071ef8296b2ed"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac7d7311f7e0fa8b6163d96dab033a755"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac7d7311f7e0fa8b6163d96dab033a755"></a>
|
||||
typedef mat< 3, 2, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gac7d7311f7e0fa8b6163d96dab033a755">bool3x2</a></td></tr>
|
||||
<tr class="memdesc:gac7d7311f7e0fa8b6163d96dab033a755"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gac7d7311f7e0fa8b6163d96dab033a755"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga6c97b99aac3e302053ffb58aace9033c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6c97b99aac3e302053ffb58aace9033c"></a>
|
||||
typedef mat< 3, 3, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga6c97b99aac3e302053ffb58aace9033c">bool3x3</a></td></tr>
|
||||
<tr class="memdesc:ga6c97b99aac3e302053ffb58aace9033c"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga6c97b99aac3e302053ffb58aace9033c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae7d6b679463d37d6c527d478fb470fdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae7d6b679463d37d6c527d478fb470fdf"></a>
|
||||
typedef mat< 3, 4, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gae7d6b679463d37d6c527d478fb470fdf">bool3x4</a></td></tr>
|
||||
<tr class="memdesc:gae7d6b679463d37d6c527d478fb470fdf"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gae7d6b679463d37d6c527d478fb470fdf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga13c3200b82708f73faac6d7f09ec91a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga13c3200b82708f73faac6d7f09ec91a3"></a>
|
||||
typedef vec< 4, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga13c3200b82708f73faac6d7f09ec91a3">bool4</a></td></tr>
|
||||
<tr class="memdesc:ga13c3200b82708f73faac6d7f09ec91a3"><td class="mdescLeft"> </td><td class="mdescRight">boolean type with 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga13c3200b82708f73faac6d7f09ec91a3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga9ed830f52408b2f83c085063a3eaf1d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9ed830f52408b2f83c085063a3eaf1d0"></a>
|
||||
typedef mat< 4, 2, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga9ed830f52408b2f83c085063a3eaf1d0">bool4x2</a></td></tr>
|
||||
<tr class="memdesc:ga9ed830f52408b2f83c085063a3eaf1d0"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga9ed830f52408b2f83c085063a3eaf1d0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad0f5dc7f22c2065b1b06d57f1c0658fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad0f5dc7f22c2065b1b06d57f1c0658fe"></a>
|
||||
typedef mat< 4, 3, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gad0f5dc7f22c2065b1b06d57f1c0658fe">bool4x3</a></td></tr>
|
||||
<tr class="memdesc:gad0f5dc7f22c2065b1b06d57f1c0658fe"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gad0f5dc7f22c2065b1b06d57f1c0658fe"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga7d2a7d13986602ae2896bfaa394235d4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7d2a7d13986602ae2896bfaa394235d4"></a>
|
||||
typedef mat< 4, 4, bool, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga7d2a7d13986602ae2896bfaa394235d4">bool4x4</a></td></tr>
|
||||
<tr class="memdesc:ga7d2a7d13986602ae2896bfaa394235d4"><td class="mdescLeft"> </td><td class="mdescRight">boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga7d2a7d13986602ae2896bfaa394235d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga20b861a9b6e2a300323671c57a02525b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga20b861a9b6e2a300323671c57a02525b"></a>
|
||||
typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga20b861a9b6e2a300323671c57a02525b">double1</a></td></tr>
|
||||
<tr class="memdesc:ga20b861a9b6e2a300323671c57a02525b"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga20b861a9b6e2a300323671c57a02525b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga45f16a4dd0db1f199afaed9fd12fe9a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga45f16a4dd0db1f199afaed9fd12fe9a8"></a>
|
||||
typedef double </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga45f16a4dd0db1f199afaed9fd12fe9a8">double1x1</a></td></tr>
|
||||
<tr class="memdesc:ga45f16a4dd0db1f199afaed9fd12fe9a8"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga45f16a4dd0db1f199afaed9fd12fe9a8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga31b729b04facccda73f07ed26958b3c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga31b729b04facccda73f07ed26958b3c2"></a>
|
||||
typedef vec< 2, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga31b729b04facccda73f07ed26958b3c2">double2</a></td></tr>
|
||||
<tr class="memdesc:ga31b729b04facccda73f07ed26958b3c2"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga31b729b04facccda73f07ed26958b3c2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae57d0201096834d25f2b91b319e7cdbd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae57d0201096834d25f2b91b319e7cdbd"></a>
|
||||
typedef mat< 2, 2, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gae57d0201096834d25f2b91b319e7cdbd">double2x2</a></td></tr>
|
||||
<tr class="memdesc:gae57d0201096834d25f2b91b319e7cdbd"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gae57d0201096834d25f2b91b319e7cdbd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3655bc324008553ca61f39952d0b2d08"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3655bc324008553ca61f39952d0b2d08"></a>
|
||||
typedef mat< 2, 3, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga3655bc324008553ca61f39952d0b2d08">double2x3</a></td></tr>
|
||||
<tr class="memdesc:ga3655bc324008553ca61f39952d0b2d08"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga3655bc324008553ca61f39952d0b2d08"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gacd33061fc64a7b2dcfd7322c49d9557a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gacd33061fc64a7b2dcfd7322c49d9557a"></a>
|
||||
typedef mat< 2, 4, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gacd33061fc64a7b2dcfd7322c49d9557a">double2x4</a></td></tr>
|
||||
<tr class="memdesc:gacd33061fc64a7b2dcfd7322c49d9557a"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gacd33061fc64a7b2dcfd7322c49d9557a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga3d8b9028a1053a44a98902cd1c389472"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3d8b9028a1053a44a98902cd1c389472"></a>
|
||||
typedef vec< 3, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga3d8b9028a1053a44a98902cd1c389472">double3</a></td></tr>
|
||||
<tr class="memdesc:ga3d8b9028a1053a44a98902cd1c389472"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga3d8b9028a1053a44a98902cd1c389472"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5ec08fc39c9d783dfcc488be240fe975"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5ec08fc39c9d783dfcc488be240fe975"></a>
|
||||
typedef mat< 3, 2, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga5ec08fc39c9d783dfcc488be240fe975">double3x2</a></td></tr>
|
||||
<tr class="memdesc:ga5ec08fc39c9d783dfcc488be240fe975"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga5ec08fc39c9d783dfcc488be240fe975"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4bad5bb20c6ddaecfe4006c93841d180"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4bad5bb20c6ddaecfe4006c93841d180"></a>
|
||||
typedef mat< 3, 3, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga4bad5bb20c6ddaecfe4006c93841d180">double3x3</a></td></tr>
|
||||
<tr class="memdesc:ga4bad5bb20c6ddaecfe4006c93841d180"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga4bad5bb20c6ddaecfe4006c93841d180"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2ef022e453d663d70aec414b2a80f756"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2ef022e453d663d70aec414b2a80f756"></a>
|
||||
typedef mat< 3, 4, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga2ef022e453d663d70aec414b2a80f756">double3x4</a></td></tr>
|
||||
<tr class="memdesc:ga2ef022e453d663d70aec414b2a80f756"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga2ef022e453d663d70aec414b2a80f756"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf92f58af24f35617518aeb3d4f63fda6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf92f58af24f35617518aeb3d4f63fda6"></a>
|
||||
typedef vec< 4, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaf92f58af24f35617518aeb3d4f63fda6">double4</a></td></tr>
|
||||
<tr class="memdesc:gaf92f58af24f35617518aeb3d4f63fda6"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaf92f58af24f35617518aeb3d4f63fda6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gabca29ccceea53669618b751aae0ba83d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabca29ccceea53669618b751aae0ba83d"></a>
|
||||
typedef mat< 4, 2, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gabca29ccceea53669618b751aae0ba83d">double4x2</a></td></tr>
|
||||
<tr class="memdesc:gabca29ccceea53669618b751aae0ba83d"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gabca29ccceea53669618b751aae0ba83d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafad66a02ccd360c86d6ab9ff9cfbc19c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafad66a02ccd360c86d6ab9ff9cfbc19c"></a>
|
||||
typedef mat< 4, 3, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gafad66a02ccd360c86d6ab9ff9cfbc19c">double4x3</a></td></tr>
|
||||
<tr class="memdesc:gafad66a02ccd360c86d6ab9ff9cfbc19c"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gafad66a02ccd360c86d6ab9ff9cfbc19c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaab541bed2e788e4537852a2492860806"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaab541bed2e788e4537852a2492860806"></a>
|
||||
typedef mat< 4, 4, double, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaab541bed2e788e4537852a2492860806">double4x4</a></td></tr>
|
||||
<tr class="memdesc:gaab541bed2e788e4537852a2492860806"><td class="mdescLeft"> </td><td class="mdescRight">double-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaab541bed2e788e4537852a2492860806"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf5208d01f6c6fbcb7bb55d610b9c0ead"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf5208d01f6c6fbcb7bb55d610b9c0ead"></a>
|
||||
typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead">float1</a></td></tr>
|
||||
<tr class="memdesc:gaf5208d01f6c6fbcb7bb55d610b9c0ead"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaf5208d01f6c6fbcb7bb55d610b9c0ead"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga73720b8dc4620835b17f74d428f98c0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga73720b8dc4620835b17f74d428f98c0c"></a>
|
||||
typedef float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga73720b8dc4620835b17f74d428f98c0c">float1x1</a></td></tr>
|
||||
<tr class="memdesc:ga73720b8dc4620835b17f74d428f98c0c"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga73720b8dc4620835b17f74d428f98c0c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga02d3c013982c183906c61d74aa3166ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga02d3c013982c183906c61d74aa3166ce"></a>
|
||||
typedef vec< 2, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga02d3c013982c183906c61d74aa3166ce">float2</a></td></tr>
|
||||
<tr class="memdesc:ga02d3c013982c183906c61d74aa3166ce"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga02d3c013982c183906c61d74aa3166ce"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga33d43ecbb60a85a1366ff83f8a0ec85f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga33d43ecbb60a85a1366ff83f8a0ec85f"></a>
|
||||
typedef mat< 2, 2, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga33d43ecbb60a85a1366ff83f8a0ec85f">float2x2</a></td></tr>
|
||||
<tr class="memdesc:ga33d43ecbb60a85a1366ff83f8a0ec85f"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga33d43ecbb60a85a1366ff83f8a0ec85f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga939b0cff15cee3030f75c1b2e36f89fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga939b0cff15cee3030f75c1b2e36f89fe"></a>
|
||||
typedef mat< 2, 3, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga939b0cff15cee3030f75c1b2e36f89fe">float2x3</a></td></tr>
|
||||
<tr class="memdesc:ga939b0cff15cee3030f75c1b2e36f89fe"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga939b0cff15cee3030f75c1b2e36f89fe"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafec3cfd901ab334a92e0242b8f2269b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafec3cfd901ab334a92e0242b8f2269b4"></a>
|
||||
typedef mat< 2, 4, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gafec3cfd901ab334a92e0242b8f2269b4">float2x4</a></td></tr>
|
||||
<tr class="memdesc:gafec3cfd901ab334a92e0242b8f2269b4"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gafec3cfd901ab334a92e0242b8f2269b4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga821ff110fc8533a053cbfcc93e078cc0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga821ff110fc8533a053cbfcc93e078cc0"></a>
|
||||
typedef vec< 3, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga821ff110fc8533a053cbfcc93e078cc0">float3</a></td></tr>
|
||||
<tr class="memdesc:ga821ff110fc8533a053cbfcc93e078cc0"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga821ff110fc8533a053cbfcc93e078cc0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa6c69f04ba95f3faedf95dae874de576"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa6c69f04ba95f3faedf95dae874de576"></a>
|
||||
typedef mat< 3, 2, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaa6c69f04ba95f3faedf95dae874de576">float3x2</a></td></tr>
|
||||
<tr class="memdesc:gaa6c69f04ba95f3faedf95dae874de576"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaa6c69f04ba95f3faedf95dae874de576"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga6ceb5d38a58becdf420026e12a6562f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6ceb5d38a58becdf420026e12a6562f3"></a>
|
||||
typedef mat< 3, 3, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga6ceb5d38a58becdf420026e12a6562f3">float3x3</a></td></tr>
|
||||
<tr class="memdesc:ga6ceb5d38a58becdf420026e12a6562f3"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga6ceb5d38a58becdf420026e12a6562f3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4d2679c321b793ca3784fe0315bb5332"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4d2679c321b793ca3784fe0315bb5332"></a>
|
||||
typedef mat< 3, 4, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga4d2679c321b793ca3784fe0315bb5332">float3x4</a></td></tr>
|
||||
<tr class="memdesc:ga4d2679c321b793ca3784fe0315bb5332"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga4d2679c321b793ca3784fe0315bb5332"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae2da7345087db3815a25d8837a727ef1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae2da7345087db3815a25d8837a727ef1"></a>
|
||||
typedef vec< 4, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gae2da7345087db3815a25d8837a727ef1">float4</a></td></tr>
|
||||
<tr class="memdesc:gae2da7345087db3815a25d8837a727ef1"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gae2da7345087db3815a25d8837a727ef1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga308b9af0c221145bcfe9bfc129d9098e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga308b9af0c221145bcfe9bfc129d9098e"></a>
|
||||
typedef mat< 4, 2, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga308b9af0c221145bcfe9bfc129d9098e">float4x2</a></td></tr>
|
||||
<tr class="memdesc:ga308b9af0c221145bcfe9bfc129d9098e"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga308b9af0c221145bcfe9bfc129d9098e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac0a51b4812038aa81d73ffcc37f741ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac0a51b4812038aa81d73ffcc37f741ac"></a>
|
||||
typedef mat< 4, 3, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gac0a51b4812038aa81d73ffcc37f741ac">float4x3</a></td></tr>
|
||||
<tr class="memdesc:gac0a51b4812038aa81d73ffcc37f741ac"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gac0a51b4812038aa81d73ffcc37f741ac"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gad3051649b3715d828a4ab92cdae7c3bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad3051649b3715d828a4ab92cdae7c3bf"></a>
|
||||
typedef mat< 4, 4, float, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gad3051649b3715d828a4ab92cdae7c3bf">float4x4</a></td></tr>
|
||||
<tr class="memdesc:gad3051649b3715d828a4ab92cdae7c3bf"><td class="mdescLeft"> </td><td class="mdescRight">single-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gad3051649b3715d828a4ab92cdae7c3bf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0670a2111b5e4a6410bd027fa0232fc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0670a2111b5e4a6410bd027fa0232fc3"></a>
|
||||
typedef int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga0670a2111b5e4a6410bd027fa0232fc3">int1</a></td></tr>
|
||||
<tr class="memdesc:ga0670a2111b5e4a6410bd027fa0232fc3"><td class="mdescLeft"> </td><td class="mdescRight">integer vector with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga0670a2111b5e4a6410bd027fa0232fc3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga056ffe02d3a45af626f8e62221881c7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga056ffe02d3a45af626f8e62221881c7a"></a>
|
||||
typedef int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga056ffe02d3a45af626f8e62221881c7a">int1x1</a></td></tr>
|
||||
<tr class="memdesc:ga056ffe02d3a45af626f8e62221881c7a"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 1 component. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga056ffe02d3a45af626f8e62221881c7a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gafe3a8fd56354caafe24bfe1b1e3ad22a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafe3a8fd56354caafe24bfe1b1e3ad22a"></a>
|
||||
typedef vec< 2, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gafe3a8fd56354caafe24bfe1b1e3ad22a">int2</a></td></tr>
|
||||
<tr class="memdesc:gafe3a8fd56354caafe24bfe1b1e3ad22a"><td class="mdescLeft"> </td><td class="mdescRight">integer vector with 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gafe3a8fd56354caafe24bfe1b1e3ad22a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4e5ce477c15836b21e3c42daac68554d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4e5ce477c15836b21e3c42daac68554d"></a>
|
||||
typedef mat< 2, 2, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga4e5ce477c15836b21e3c42daac68554d">int2x2</a></td></tr>
|
||||
<tr class="memdesc:ga4e5ce477c15836b21e3c42daac68554d"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga4e5ce477c15836b21e3c42daac68554d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga197ded5ad8354f6b6fb91189d7a269b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga197ded5ad8354f6b6fb91189d7a269b3"></a>
|
||||
typedef mat< 2, 3, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga197ded5ad8354f6b6fb91189d7a269b3">int2x3</a></td></tr>
|
||||
<tr class="memdesc:ga197ded5ad8354f6b6fb91189d7a269b3"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga197ded5ad8354f6b6fb91189d7a269b3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga2749d59a7fddbac44f34ba78e57ef807"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2749d59a7fddbac44f34ba78e57ef807"></a>
|
||||
typedef mat< 2, 4, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga2749d59a7fddbac44f34ba78e57ef807">int2x4</a></td></tr>
|
||||
<tr class="memdesc:ga2749d59a7fddbac44f34ba78e57ef807"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga2749d59a7fddbac44f34ba78e57ef807"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga909c38a425f215a50c847145d7da09f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga909c38a425f215a50c847145d7da09f0"></a>
|
||||
typedef vec< 3, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga909c38a425f215a50c847145d7da09f0">int3</a></td></tr>
|
||||
<tr class="memdesc:ga909c38a425f215a50c847145d7da09f0"><td class="mdescLeft"> </td><td class="mdescRight">integer vector with 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga909c38a425f215a50c847145d7da09f0"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa4cbe16a92cf3664376c7a2fc5126aa8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa4cbe16a92cf3664376c7a2fc5126aa8"></a>
|
||||
typedef mat< 3, 2, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaa4cbe16a92cf3664376c7a2fc5126aa8">int3x2</a></td></tr>
|
||||
<tr class="memdesc:gaa4cbe16a92cf3664376c7a2fc5126aa8"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaa4cbe16a92cf3664376c7a2fc5126aa8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga15c9649286f0bf431bdf9b3509580048"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga15c9649286f0bf431bdf9b3509580048"></a>
|
||||
typedef mat< 3, 3, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga15c9649286f0bf431bdf9b3509580048">int3x3</a></td></tr>
|
||||
<tr class="memdesc:ga15c9649286f0bf431bdf9b3509580048"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga15c9649286f0bf431bdf9b3509580048"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaacac46ddc7d15d0f9529d05c92946a0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaacac46ddc7d15d0f9529d05c92946a0f"></a>
|
||||
typedef mat< 3, 4, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaacac46ddc7d15d0f9529d05c92946a0f">int3x4</a></td></tr>
|
||||
<tr class="memdesc:gaacac46ddc7d15d0f9529d05c92946a0f"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaacac46ddc7d15d0f9529d05c92946a0f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaecdef18c819c205aeee9f94dc93de56a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaecdef18c819c205aeee9f94dc93de56a"></a>
|
||||
typedef vec< 4, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gaecdef18c819c205aeee9f94dc93de56a">int4</a></td></tr>
|
||||
<tr class="memdesc:gaecdef18c819c205aeee9f94dc93de56a"><td class="mdescLeft"> </td><td class="mdescRight">integer vector with 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gaecdef18c819c205aeee9f94dc93de56a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga97a39dd9bc7d572810d80b8467cbffa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga97a39dd9bc7d572810d80b8467cbffa1"></a>
|
||||
typedef mat< 4, 2, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga97a39dd9bc7d572810d80b8467cbffa1">int4x2</a></td></tr>
|
||||
<tr class="memdesc:ga97a39dd9bc7d572810d80b8467cbffa1"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga97a39dd9bc7d572810d80b8467cbffa1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gae4a2c53f14aeec9a17c2b81142b7e82d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae4a2c53f14aeec9a17c2b81142b7e82d"></a>
|
||||
typedef mat< 4, 3, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#gae4a2c53f14aeec9a17c2b81142b7e82d">int4x3</a></td></tr>
|
||||
<tr class="memdesc:gae4a2c53f14aeec9a17c2b81142b7e82d"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:gae4a2c53f14aeec9a17c2b81142b7e82d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga04dee1552424198b8f58b377c2ee00d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga04dee1552424198b8f58b377c2ee00d8"></a>
|
||||
typedef mat< 4, 4, int, highp > </td><td class="memItemRight" valign="bottom"><a class="el" href="a00176.html#ga04dee1552424198b8f58b377c2ee00d8">int4x4</a></td></tr>
|
||||
<tr class="memdesc:ga04dee1552424198b8f58b377c2ee00d8"><td class="mdescLeft"> </td><td class="mdescRight">integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) <br /></td></tr>
|
||||
<tr class="separator:ga04dee1552424198b8f58b377c2ee00d8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:gac63011205bf6d0be82589dc56dd26708"><td class="memTemplParams" colspan="2"><a class="anchor" id="gac63011205bf6d0be82589dc56dd26708"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gac63011205bf6d0be82589dc56dd26708"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gac63011205bf6d0be82589dc56dd26708">atan2</a> (T x, T y)</td></tr>
|
||||
<tr class="memdesc:gac63011205bf6d0be82589dc56dd26708"><td class="mdescLeft"> </td><td class="mdescRight">Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gac63011205bf6d0be82589dc56dd26708"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga83bc41bd6f89113ee8006576b12bfc50"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga83bc41bd6f89113ee8006576b12bfc50"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga83bc41bd6f89113ee8006576b12bfc50"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga83bc41bd6f89113ee8006576b12bfc50">atan2</a> (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y)</td></tr>
|
||||
<tr class="memdesc:ga83bc41bd6f89113ee8006576b12bfc50"><td class="mdescLeft"> </td><td class="mdescRight">Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga83bc41bd6f89113ee8006576b12bfc50"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac39314f5087e7e51e592897cabbc1927"><td class="memTemplParams" colspan="2"><a class="anchor" id="gac39314f5087e7e51e592897cabbc1927"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gac39314f5087e7e51e592897cabbc1927"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gac39314f5087e7e51e592897cabbc1927">atan2</a> (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y)</td></tr>
|
||||
<tr class="memdesc:gac39314f5087e7e51e592897cabbc1927"><td class="mdescLeft"> </td><td class="mdescRight">Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gac39314f5087e7e51e592897cabbc1927"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaba86c28da7bf5bdac64fecf7d56e8ff3"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaba86c28da7bf5bdac64fecf7d56e8ff3"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaba86c28da7bf5bdac64fecf7d56e8ff3"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gaba86c28da7bf5bdac64fecf7d56e8ff3">atan2</a> (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y)</td></tr>
|
||||
<tr class="memdesc:gaba86c28da7bf5bdac64fecf7d56e8ff3"><td class="mdescLeft"> </td><td class="mdescRight">Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gaba86c28da7bf5bdac64fecf7d56e8ff3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf4b04dcd3526996d68c1bfe17bfc8657"></a>
|
||||
template<typename genType > </td></tr>
|
||||
<tr class="memitem:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL bool </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gaf4b04dcd3526996d68c1bfe17bfc8657">isfinite</a> (genType const &x)</td></tr>
|
||||
<tr class="memdesc:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="mdescLeft"> </td><td class="mdescRight">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gac3b12b8ac3014418fe53c299478b6603"><td class="memTemplParams" colspan="2"><a class="anchor" id="gac3b12b8ac3014418fe53c299478b6603"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gac3b12b8ac3014418fe53c299478b6603"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 1, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gac3b12b8ac3014418fe53c299478b6603">isfinite</a> (const vec< 1, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:gac3b12b8ac3014418fe53c299478b6603"><td class="mdescLeft"> </td><td class="mdescRight">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gac3b12b8ac3014418fe53c299478b6603"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga8e76dc3e406ce6a4155c2b12a2e4b084"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8e76dc3e406ce6a4155c2b12a2e4b084"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga8e76dc3e406ce6a4155c2b12a2e4b084"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga8e76dc3e406ce6a4155c2b12a2e4b084">isfinite</a> (const vec< 2, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:ga8e76dc3e406ce6a4155c2b12a2e4b084"><td class="mdescLeft"> </td><td class="mdescRight">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga8e76dc3e406ce6a4155c2b12a2e4b084"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga929ef27f896d902c1771a2e5e150fc97"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga929ef27f896d902c1771a2e5e150fc97"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga929ef27f896d902c1771a2e5e150fc97"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga929ef27f896d902c1771a2e5e150fc97">isfinite</a> (const vec< 3, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:ga929ef27f896d902c1771a2e5e150fc97"><td class="mdescLeft"> </td><td class="mdescRight">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga929ef27f896d902c1771a2e5e150fc97"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga19925badbe10ce61df1d0de00be0b5ad"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga19925badbe10ce61df1d0de00be0b5ad"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga19925badbe10ce61df1d0de00be0b5ad"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 4, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga19925badbe10ce61df1d0de00be0b5ad">isfinite</a> (const vec< 4, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:ga19925badbe10ce61df1d0de00be0b5ad"><td class="mdescLeft"> </td><td class="mdescRight">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga19925badbe10ce61df1d0de00be0b5ad"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga5494ba3a95ea6594c86fc75236886864"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5494ba3a95ea6594c86fc75236886864"></a>
|
||||
template<typename T > </td></tr>
|
||||
<tr class="memitem:ga5494ba3a95ea6594c86fc75236886864"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga5494ba3a95ea6594c86fc75236886864">lerp</a> (T x, T y, T a)</td></tr>
|
||||
<tr class="memdesc:ga5494ba3a95ea6594c86fc75236886864"><td class="mdescLeft"> </td><td class="mdescRight">Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga5494ba3a95ea6594c86fc75236886864"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaa551c0a0e16d2d4608e49f7696df897f"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaa551c0a0e16d2d4608e49f7696df897f"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaa551c0a0e16d2d4608e49f7696df897f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gaa551c0a0e16d2d4608e49f7696df897f">lerp</a> (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)</td></tr>
|
||||
<tr class="memdesc:gaa551c0a0e16d2d4608e49f7696df897f"><td class="mdescLeft"> </td><td class="mdescRight">Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gaa551c0a0e16d2d4608e49f7696df897f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga44a8b5fd776320f1713413dec959b32a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga44a8b5fd776320f1713413dec959b32a"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga44a8b5fd776320f1713413dec959b32a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga44a8b5fd776320f1713413dec959b32a">lerp</a> (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)</td></tr>
|
||||
<tr class="memdesc:ga44a8b5fd776320f1713413dec959b32a"><td class="mdescLeft"> </td><td class="mdescRight">Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga44a8b5fd776320f1713413dec959b32a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga89ac8e000199292ec7875519d27e214b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga89ac8e000199292ec7875519d27e214b"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga89ac8e000199292ec7875519d27e214b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga89ac8e000199292ec7875519d27e214b">lerp</a> (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)</td></tr>
|
||||
<tr class="memdesc:ga89ac8e000199292ec7875519d27e214b"><td class="mdescLeft"> </td><td class="mdescRight">Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga89ac8e000199292ec7875519d27e214b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaf68de5baf72d16135368b8ef4f841604"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf68de5baf72d16135368b8ef4f841604"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaf68de5baf72d16135368b8ef4f841604"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gaf68de5baf72d16135368b8ef4f841604">lerp</a> (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)</td></tr>
|
||||
<tr class="memdesc:gaf68de5baf72d16135368b8ef4f841604"><td class="mdescLeft"> </td><td class="mdescRight">Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gaf68de5baf72d16135368b8ef4f841604"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga4ae1a616c8540a2649eab8e0cd051bb3"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga4ae1a616c8540a2649eab8e0cd051bb3"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga4ae1a616c8540a2649eab8e0cd051bb3"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga4ae1a616c8540a2649eab8e0cd051bb3">lerp</a> (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)</td></tr>
|
||||
<tr class="memdesc:ga4ae1a616c8540a2649eab8e0cd051bb3"><td class="mdescLeft"> </td><td class="mdescRight">Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga4ae1a616c8540a2649eab8e0cd051bb3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gab5477ab69c40de4db5d58d3359529724"><td class="memTemplParams" colspan="2"><a class="anchor" id="gab5477ab69c40de4db5d58d3359529724"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gab5477ab69c40de4db5d58d3359529724"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gab5477ab69c40de4db5d58d3359529724">lerp</a> (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)</td></tr>
|
||||
<tr class="memdesc:gab5477ab69c40de4db5d58d3359529724"><td class="mdescLeft"> </td><td class="mdescRight">Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gab5477ab69c40de4db5d58d3359529724"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga0fd09e616d122bc2ed9726682ffd44b7"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga0fd09e616d122bc2ed9726682ffd44b7">saturate</a> (T x)</td></tr>
|
||||
<tr class="memdesc:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="mdescLeft"> </td><td class="mdescRight">Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:gaee97b8001c794a78a44f5d59f62a8aba"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaee97b8001c794a78a44f5d59f62a8aba"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:gaee97b8001c794a78a44f5d59f62a8aba"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#gaee97b8001c794a78a44f5d59f62a8aba">saturate</a> (const vec< 2, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:gaee97b8001c794a78a44f5d59f62a8aba"><td class="mdescLeft"> </td><td class="mdescRight">Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:gaee97b8001c794a78a44f5d59f62a8aba"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga39bfe3a421286ee31680d45c31ccc161"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga39bfe3a421286ee31680d45c31ccc161"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga39bfe3a421286ee31680d45c31ccc161"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga39bfe3a421286ee31680d45c31ccc161">saturate</a> (const vec< 3, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:ga39bfe3a421286ee31680d45c31ccc161"><td class="mdescLeft"> </td><td class="mdescRight">Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga39bfe3a421286ee31680d45c31ccc161"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ga356f8c3a7e7d6376d3d4b0a026407183"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga356f8c3a7e7d6376d3d4b0a026407183"></a>
|
||||
template<typename T , qualifier Q> </td></tr>
|
||||
<tr class="memitem:ga356f8c3a7e7d6376d3d4b0a026407183"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00176.html#ga356f8c3a7e7d6376d3d4b0a026407183">saturate</a> (const vec< 4, T, Q > &x)</td></tr>
|
||||
<tr class="memdesc:ga356f8c3a7e7d6376d3d4b0a026407183"><td class="mdescLeft"> </td><td class="mdescRight">Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) <br /></td></tr>
|
||||
<tr class="separator:ga356f8c3a7e7d6376d3d4b0a026407183"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p><a class="el" href="a00176.html">GLM_GTX_compatibility</a> </p>
|
||||
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00143.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
|
||||
|
||||
<p>Definition in file <a class="el" href="a00017_source.html">compatibility.hpp</a>.</p>
|
||||
</div></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||
</a> 1.8.10
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user