3.8 KB、117行 生 Blame 履歴
1/// @ref gtx_matrix_major_storage
2/// @file glm/gtx/matrix_major_storage.hpp
3///
4/// @see core (dependence)
5/// @see gtx_extented_min_max (dependence)
6///
7/// @defgroup gtx_matrix_major_storage GLM_GTX_matrix_major_storage
8/// @ingroup gtx
9///
10/// Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension.
11///
12/// Build matrices with specific matrix order, row or column
13
14#pragma once
15
16// Dependency:
17#include "../glm.hpp"
18
19#ifndef GLM_ENABLE_EXPERIMENTAL
20# error "GLM: GLM_GTX_matrix_major_storage 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."
21#elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
22# pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
23#endif
24
25namespace glm
26{
27 /// @addtogroup gtx_matrix_major_storage
28 /// @{
29
30 //! Build a row major matrix from row vectors.
31 //! From GLM_GTX_matrix_major_storage extension.
32 template<typename T, qualifier Q>
33 GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
34 vec<2, T, Q> const& v1,
35 vec<2, T, Q> const& v2);
36
37 //! Build a row major matrix from other matrix.
38 //! From GLM_GTX_matrix_major_storage extension.
39 template<typename T, qualifier Q>
40 GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
41 mat<2, 2, T, Q> const& m);
42
43 //! Build a row major matrix from row vectors.
44 //! From GLM_GTX_matrix_major_storage extension.
45 template<typename T, qualifier Q>
46 GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
47 vec<3, T, Q> const& v1,
48 vec<3, T, Q> const& v2,
49 vec<3, T, Q> const& v3);
50
51 //! Build a row major matrix from other matrix.
52 //! From GLM_GTX_matrix_major_storage extension.
53 template<typename T, qualifier Q>
54 GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
55 mat<3, 3, T, Q> const& m);
56
57 //! Build a row major matrix from row vectors.
58 //! From GLM_GTX_matrix_major_storage extension.
59 template<typename T, qualifier Q>
60 GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
61 vec<4, T, Q> const& v1,
62 vec<4, T, Q> const& v2,
63 vec<4, T, Q> const& v3,
64 vec<4, T, Q> const& v4);
65
66 //! Build a row major matrix from other matrix.
67 //! From GLM_GTX_matrix_major_storage extension.
68 template<typename T, qualifier Q>
69 GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
70 mat<4, 4, T, Q> const& m);
71
72 //! Build a column major matrix from column vectors.
73 //! From GLM_GTX_matrix_major_storage extension.
74 template<typename T, qualifier Q>
75 GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
76 vec<2, T, Q> const& v1,
77 vec<2, T, Q> const& v2);
78
79 //! Build a column major matrix from other matrix.
80 //! From GLM_GTX_matrix_major_storage extension.
81 template<typename T, qualifier Q>
82 GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
83 mat<2, 2, T, Q> const& m);
84
85 //! Build a column major matrix from column vectors.
86 //! From GLM_GTX_matrix_major_storage extension.
87 template<typename T, qualifier Q>
88 GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
89 vec<3, T, Q> const& v1,
90 vec<3, T, Q> const& v2,
91 vec<3, T, Q> const& v3);
92
93 //! Build a column major matrix from other matrix.
94 //! From GLM_GTX_matrix_major_storage extension.
95 template<typename T, qualifier Q>
96 GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
97 mat<3, 3, T, Q> const& m);
98
99 //! Build a column major matrix from column vectors.
100 //! From GLM_GTX_matrix_major_storage extension.
101 template<typename T, qualifier Q>
102 GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
103 vec<4, T, Q> const& v1,
104 vec<4, T, Q> const& v2,
105 vec<4, T, Q> const& v3,
106 vec<4, T, Q> const& v4);
107
108 //! Build a column major matrix from other matrix.
109 //! From GLM_GTX_matrix_major_storage extension.
110 template<typename T, qualifier Q>
111 GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
112 mat<4, 4, T, Q> const& m);
113
114 /// @}
115}//namespace glm
116
117#include "matrix_major_storage.inl"