master
ブランチ master
VulkanExample / dep / include / glm / gtc / type_ptr.inl
9.1 KB、398行 生 Blame 履歴
1/// @ref gtc_type_ptr
2
3#include <cstring>
4
5namespace glm
6{
7 /// @addtogroup gtc_type_ptr
8 /// @{
9
10 template<typename T, qualifier Q>
11 GLM_FUNC_QUALIFIER T const* value_ptr(vec<1, T, Q> const& v)
12 {
13 return &(v.x);
14 }
15
16 template<typename T, qualifier Q>
17 GLM_FUNC_QUALIFIER T* value_ptr(vec<1, T, Q>& v)
18 {
19 return &(v.x);
20 }
21
22 template<typename T, qualifier Q>
23 GLM_FUNC_QUALIFIER T const* value_ptr(vec<2, T, Q> const& v)
24 {
25 return &(v.x);
26 }
27
28 template<typename T, qualifier Q>
29 GLM_FUNC_QUALIFIER T* value_ptr(vec<2, T, Q>& v)
30 {
31 return &(v.x);
32 }
33
34 template<typename T, qualifier Q>
35 GLM_FUNC_QUALIFIER T const * value_ptr(vec<3, T, Q> const& v)
36 {
37 return &(v.x);
38 }
39
40 template<typename T, qualifier Q>
41 GLM_FUNC_QUALIFIER T* value_ptr(vec<3, T, Q>& v)
42 {
43 return &(v.x);
44 }
45
46 template<typename T, qualifier Q>
47 GLM_FUNC_QUALIFIER T const* value_ptr(vec<4, T, Q> const& v)
48 {
49 return &(v.x);
50 }
51
52 template<typename T, qualifier Q>
53 GLM_FUNC_QUALIFIER T* value_ptr(vec<4, T, Q>& v)
54 {
55 return &(v.x);
56 }
57
58 template<typename T, qualifier Q>
59 GLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 2, T, Q> const& m)
60 {
61 return &(m[0].x);
62 }
63
64 template<typename T, qualifier Q>
65 GLM_FUNC_QUALIFIER T* value_ptr(mat<2, 2, T, Q>& m)
66 {
67 return &(m[0].x);
68 }
69
70 template<typename T, qualifier Q>
71 GLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 3, T, Q> const& m)
72 {
73 return &(m[0].x);
74 }
75
76 template<typename T, qualifier Q>
77 GLM_FUNC_QUALIFIER T* value_ptr(mat<3, 3, T, Q>& m)
78 {
79 return &(m[0].x);
80 }
81
82 template<typename T, qualifier Q>
83 GLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 4, T, Q> const& m)
84 {
85 return &(m[0].x);
86 }
87
88 template<typename T, qualifier Q>
89 GLM_FUNC_QUALIFIER T* value_ptr(mat<4, 4, T, Q>& m)
90 {
91 return &(m[0].x);
92 }
93
94 template<typename T, qualifier Q>
95 GLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 3, T, Q> const& m)
96 {
97 return &(m[0].x);
98 }
99
100 template<typename T, qualifier Q>
101 GLM_FUNC_QUALIFIER T* value_ptr(mat<2, 3, T, Q>& m)
102 {
103 return &(m[0].x);
104 }
105
106 template<typename T, qualifier Q>
107 GLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 2, T, Q> const& m)
108 {
109 return &(m[0].x);
110 }
111
112 template<typename T, qualifier Q>
113 GLM_FUNC_QUALIFIER T* value_ptr(mat<3, 2, T, Q>& m)
114 {
115 return &(m[0].x);
116 }
117
118 template<typename T, qualifier Q>
119 GLM_FUNC_QUALIFIER T const* value_ptr(mat<2, 4, T, Q> const& m)
120 {
121 return &(m[0].x);
122 }
123
124 template<typename T, qualifier Q>
125 GLM_FUNC_QUALIFIER T* value_ptr(mat<2, 4, T, Q>& m)
126 {
127 return &(m[0].x);
128 }
129
130 template<typename T, qualifier Q>
131 GLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 2, T, Q> const& m)
132 {
133 return &(m[0].x);
134 }
135
136 template<typename T, qualifier Q>
137 GLM_FUNC_QUALIFIER T* value_ptr(mat<4, 2, T, Q>& m)
138 {
139 return &(m[0].x);
140 }
141
142 template<typename T, qualifier Q>
143 GLM_FUNC_QUALIFIER T const* value_ptr(mat<3, 4, T, Q> const& m)
144 {
145 return &(m[0].x);
146 }
147
148 template<typename T, qualifier Q>
149 GLM_FUNC_QUALIFIER T* value_ptr(mat<3, 4, T, Q>& m)
150 {
151 return &(m[0].x);
152 }
153
154 template<typename T, qualifier Q>
155 GLM_FUNC_QUALIFIER T const* value_ptr(mat<4, 3, T, Q> const& m)
156 {
157 return &(m[0].x);
158 }
159
160 template<typename T, qualifier Q>
161 GLM_FUNC_QUALIFIER T * value_ptr(mat<4, 3, T, Q>& m)
162 {
163 return &(m[0].x);
164 }
165
166 template<typename T, qualifier Q>
167 GLM_FUNC_QUALIFIER T const * value_ptr(qua<T, Q> const& q)
168 {
169 return &(q[0]);
170 }
171
172 template<typename T, qualifier Q>
173 GLM_FUNC_QUALIFIER T* value_ptr(qua<T, Q>& q)
174 {
175 return &(q[0]);
176 }
177
178 template <typename T, qualifier Q>
179 GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<1, T, Q> const& v)
180 {
181 return v;
182 }
183
184 template <typename T, qualifier Q>
185 GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<2, T, Q> const& v)
186 {
187 return vec<1, T, Q>(v);
188 }
189
190 template <typename T, qualifier Q>
191 GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<3, T, Q> const& v)
192 {
193 return vec<1, T, Q>(v);
194 }
195
196 template <typename T, qualifier Q>
197 GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<4, T, Q> const& v)
198 {
199 return vec<1, T, Q>(v);
200 }
201
202 template <typename T, qualifier Q>
203 GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<1, T, Q> const& v)
204 {
205 return vec<2, T, Q>(v.x, static_cast<T>(0));
206 }
207
208 template <typename T, qualifier Q>
209 GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<2, T, Q> const& v)
210 {
211 return v;
212 }
213
214 template <typename T, qualifier Q>
215 GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<3, T, Q> const& v)
216 {
217 return vec<2, T, Q>(v);
218 }
219
220 template <typename T, qualifier Q>
221 GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<4, T, Q> const& v)
222 {
223 return vec<2, T, Q>(v);
224 }
225
226 template <typename T, qualifier Q>
227 GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<1, T, Q> const& v)
228 {
229 return vec<3, T, Q>(v.x, static_cast<T>(0), static_cast<T>(0));
230 }
231
232 template <typename T, qualifier Q>
233 GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<2, T, Q> const& v)
234 {
235 return vec<3, T, Q>(v.x, v.y, static_cast<T>(0));
236 }
237
238 template <typename T, qualifier Q>
239 GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<3, T, Q> const& v)
240 {
241 return v;
242 }
243
244 template <typename T, qualifier Q>
245 GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<4, T, Q> const& v)
246 {
247 return vec<3, T, Q>(v);
248 }
249
250 template <typename T, qualifier Q>
251 GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<1, T, Q> const& v)
252 {
253 return vec<4, T, Q>(v.x, static_cast<T>(0), static_cast<T>(0), static_cast<T>(1));
254 }
255
256 template <typename T, qualifier Q>
257 GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<2, T, Q> const& v)
258 {
259 return vec<4, T, Q>(v.x, v.y, static_cast<T>(0), static_cast<T>(1));
260 }
261
262 template <typename T, qualifier Q>
263 GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<3, T, Q> const& v)
264 {
265 return vec<4, T, Q>(v.x, v.y, v.z, static_cast<T>(1));
266 }
267
268 template <typename T, qualifier Q>
269 GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<4, T, Q> const& v)
270 {
271 return v;
272 }
273
274 template<typename T>
275 GLM_FUNC_QUALIFIER vec<2, T, defaultp> make_vec2(T const *const ptr)
276 {
277 vec<2, T, defaultp> Result;
278 memcpy(value_ptr(Result), ptr, sizeof(vec<2, T, defaultp>));
279 return Result;
280 }
281
282 template<typename T>
283 GLM_FUNC_QUALIFIER vec<3, T, defaultp> make_vec3(T const *const ptr)
284 {
285 vec<3, T, defaultp> Result;
286 memcpy(value_ptr(Result), ptr, sizeof(vec<3, T, defaultp>));
287 return Result;
288 }
289
290 template<typename T>
291 GLM_FUNC_QUALIFIER vec<4, T, defaultp> make_vec4(T const *const ptr)
292 {
293 vec<4, T, defaultp> Result;
294 memcpy(value_ptr(Result), ptr, sizeof(vec<4, T, defaultp>));
295 return Result;
296 }
297
298 template<typename T>
299 GLM_FUNC_QUALIFIER mat<2, 2, T, defaultp> make_mat2x2(T const *const ptr)
300 {
301 mat<2, 2, T, defaultp> Result;
302 memcpy(value_ptr(Result), ptr, sizeof(mat<2, 2, T, defaultp>));
303 return Result;
304 }
305
306 template<typename T>
307 GLM_FUNC_QUALIFIER mat<2, 3, T, defaultp> make_mat2x3(T const *const ptr)
308 {
309 mat<2, 3, T, defaultp> Result;
310 memcpy(value_ptr(Result), ptr, sizeof(mat<2, 3, T, defaultp>));
311 return Result;
312 }
313
314 template<typename T>
315 GLM_FUNC_QUALIFIER mat<2, 4, T, defaultp> make_mat2x4(T const *const ptr)
316 {
317 mat<2, 4, T, defaultp> Result;
318 memcpy(value_ptr(Result), ptr, sizeof(mat<2, 4, T, defaultp>));
319 return Result;
320 }
321
322 template<typename T>
323 GLM_FUNC_QUALIFIER mat<3, 2, T, defaultp> make_mat3x2(T const *const ptr)
324 {
325 mat<3, 2, T, defaultp> Result;
326 memcpy(value_ptr(Result), ptr, sizeof(mat<3, 2, T, defaultp>));
327 return Result;
328 }
329
330 template<typename T>
331 GLM_FUNC_QUALIFIER mat<3, 3, T, defaultp> make_mat3x3(T const *const ptr)
332 {
333 mat<3, 3, T, defaultp> Result;
334 memcpy(value_ptr(Result), ptr, sizeof(mat<3, 3, T, defaultp>));
335 return Result;
336 }
337
338 template<typename T>
339 GLM_FUNC_QUALIFIER mat<3, 4, T, defaultp> make_mat3x4(T const *const ptr)
340 {
341 mat<3, 4, T, defaultp> Result;
342 memcpy(value_ptr(Result), ptr, sizeof(mat<3, 4, T, defaultp>));
343 return Result;
344 }
345
346 template<typename T>
347 GLM_FUNC_QUALIFIER mat<4, 2, T, defaultp> make_mat4x2(T const *const ptr)
348 {
349 mat<4, 2, T, defaultp> Result;
350 memcpy(value_ptr(Result), ptr, sizeof(mat<4, 2, T, defaultp>));
351 return Result;
352 }
353
354 template<typename T>
355 GLM_FUNC_QUALIFIER mat<4, 3, T, defaultp> make_mat4x3(T const *const ptr)
356 {
357 mat<4, 3, T, defaultp> Result;
358 memcpy(value_ptr(Result), ptr, sizeof(mat<4, 3, T, defaultp>));
359 return Result;
360 }
361
362 template<typename T>
363 GLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> make_mat4x4(T const *const ptr)
364 {
365 mat<4, 4, T, defaultp> Result;
366 memcpy(value_ptr(Result), ptr, sizeof(mat<4, 4, T, defaultp>));
367 return Result;
368 }
369
370 template<typename T>
371 GLM_FUNC_QUALIFIER mat<2, 2, T, defaultp> make_mat2(T const *const ptr)
372 {
373 return make_mat2x2(ptr);
374 }
375
376 template<typename T>
377 GLM_FUNC_QUALIFIER mat<3, 3, T, defaultp> make_mat3(T const *const ptr)
378 {
379 return make_mat3x3(ptr);
380 }
381
382 template<typename T>
383 GLM_FUNC_QUALIFIER mat<4, 4, T, defaultp> make_mat4(T const *const ptr)
384 {
385 return make_mat4x4(ptr);
386 }
387
388 template<typename T>
389 GLM_FUNC_QUALIFIER qua<T, defaultp> make_quat(T const *const ptr)
390 {
391 qua<T, defaultp> Result;
392 memcpy(value_ptr(Result), ptr, sizeof(qua<T, defaultp>));
393 return Result;
394 }
395
396 /// @}
397}//namespace glm
398