Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #ifndef GLM_GTC_type_ptr
00060 #define GLM_GTC_type_ptr GLM_VERSION
00061
00062
00063 #include "../glm.hpp"
00064 #include "../gtc/half_float.hpp"
00065 #include "../gtc/quaternion.hpp"
00066 #include <cstring>
00067
00068 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
00069 # pragma message("GLM: GLM_GTC_type_ptr extension included")
00070 #endif
00071
00072 namespace glm
00073 {
00076
00079 template<typename T>
00080 GLM_FUNC_QUALIFIER T const * value_ptr
00081 (
00082 detail::tvec2<T> const & vec
00083 )
00084 {
00085 return &(vec.x);
00086 }
00087
00090 template<typename T>
00091 GLM_FUNC_QUALIFIER T * value_ptr
00092 (
00093 detail::tvec2<T> & vec
00094 )
00095 {
00096 return &(vec.x);
00097 }
00098
00101 template<typename T>
00102 GLM_FUNC_QUALIFIER T const * value_ptr
00103 (
00104 detail::tvec3<T> const & vec
00105 )
00106 {
00107 return &(vec.x);
00108 }
00109
00112 template<typename T>
00113 GLM_FUNC_QUALIFIER T * value_ptr
00114 (
00115 detail::tvec3<T> & vec
00116 )
00117 {
00118 return &(vec.x);
00119 }
00120
00123 template<typename T>
00124 GLM_FUNC_QUALIFIER T const * value_ptr
00125 (
00126 detail::tvec4<T> const & vec
00127 )
00128 {
00129 return &(vec.x);
00130 }
00131
00134 template<typename T>
00135 GLM_FUNC_QUALIFIER T * value_ptr
00136 (
00137 detail::tvec4<T> & vec
00138 )
00139 {
00140 return &(vec.x);
00141 }
00142
00145 template<typename T>
00146 GLM_FUNC_QUALIFIER T const * value_ptr
00147 (
00148 detail::tmat2x2<T> const & mat
00149 )
00150 {
00151 return &(mat[0].x);
00152 }
00153
00156 template<typename T>
00157 GLM_FUNC_QUALIFIER T * value_ptr
00158 (
00159 detail::tmat2x2<T> & mat
00160 )
00161 {
00162 return &(mat[0].x);
00163 }
00164
00167 template<typename T>
00168 GLM_FUNC_QUALIFIER T const * value_ptr
00169 (
00170 detail::tmat3x3<T> const & mat
00171 )
00172 {
00173 return &(mat[0].x);
00174 }
00175
00178 template<typename T>
00179 GLM_FUNC_QUALIFIER T * value_ptr
00180 (
00181 detail::tmat3x3<T> & mat
00182 )
00183 {
00184 return &(mat[0].x);
00185 }
00186
00189 template<typename T>
00190 GLM_FUNC_QUALIFIER T const * value_ptr
00191 (
00192 detail::tmat4x4<T> const & mat
00193 )
00194 {
00195 return &(mat[0].x);
00196 }
00197
00200 template<typename T>
00201 GLM_FUNC_QUALIFIER T * value_ptr
00202 (
00203 detail::tmat4x4<T> & mat
00204 )
00205 {
00206 return &(mat[0].x);
00207 }
00208
00211 template<typename T>
00212 GLM_FUNC_QUALIFIER T const * value_ptr
00213 (
00214 detail::tmat2x3<T> const & mat
00215 )
00216 {
00217 return &(mat[0].x);
00218 }
00219
00222 template<typename T>
00223 GLM_FUNC_QUALIFIER T * value_ptr
00224 (
00225 detail::tmat2x3<T> & mat
00226 )
00227 {
00228 return &(mat[0].x);
00229 }
00230
00233 template<typename T>
00234 GLM_FUNC_QUALIFIER T const * value_ptr
00235 (
00236 detail::tmat3x2<T> const & mat
00237 )
00238 {
00239 return &(mat[0].x);
00240 }
00241
00244 template<typename T>
00245 GLM_FUNC_QUALIFIER T * value_ptr
00246 (
00247 detail::tmat3x2<T> & mat
00248 )
00249 {
00250 return &(mat[0].x);
00251 }
00252
00255 template<typename T>
00256 GLM_FUNC_QUALIFIER T const * value_ptr
00257 (
00258 detail::tmat2x4<T> const & mat
00259 )
00260 {
00261 return &(mat[0].x);
00262 }
00263
00266 template<typename T>
00267 GLM_FUNC_QUALIFIER T * value_ptr
00268 (
00269 detail::tmat2x4<T> & mat
00270 )
00271 {
00272 return &(mat[0].x);
00273 }
00274
00277 template<typename T>
00278 GLM_FUNC_QUALIFIER T const * value_ptr
00279 (
00280 detail::tmat4x2<T> const & mat
00281 )
00282 {
00283 return &(mat[0].x);
00284 }
00285
00288 template<typename T>
00289 GLM_FUNC_QUALIFIER T * value_ptr
00290 (
00291 detail::tmat4x2<T> & mat
00292 )
00293 {
00294 return &(mat[0].x);
00295 }
00296
00299 template<typename T>
00300 GLM_FUNC_QUALIFIER T const * value_ptr
00301 (
00302 detail::tmat3x4<T> const & mat
00303 )
00304 {
00305 return &(mat[0].x);
00306 }
00307
00310 template<typename T>
00311 GLM_FUNC_QUALIFIER T * value_ptr
00312 (
00313 detail::tmat3x4<T> & mat
00314 )
00315 {
00316 return &(mat[0].x);
00317 }
00318
00321 template<typename T>
00322 GLM_FUNC_QUALIFIER T const * value_ptr
00323 (
00324 detail::tmat4x3<T> const & mat
00325 )
00326 {
00327 return &(mat[0].x);
00328 }
00329
00332 template<typename T>
00333 GLM_FUNC_QUALIFIER T const * value_ptr
00334 (
00335 detail::tquat<T> const & q
00336 )
00337 {
00338 return &(q[0]);
00339 }
00340
00343 template<typename T>
00344 GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3<T> & mat)
00345 {
00346 return &(mat[0].x);
00347 }
00348
00351 template<typename T>
00352 GLM_FUNC_QUALIFIER detail::tvec2<T> make_vec2(T const * const ptr)
00353 {
00354 detail::tvec2<T> Result;
00355 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2<T>));
00356 return Result;
00357 }
00358
00361 template<typename T>
00362 GLM_FUNC_QUALIFIER detail::tvec3<T> make_vec3(T const * const ptr)
00363 {
00364 detail::tvec3<T> Result;
00365 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3<T>));
00366 return Result;
00367 }
00368
00371 template<typename T>
00372 GLM_FUNC_QUALIFIER detail::tvec4<T> make_vec4(T const * const ptr)
00373 {
00374 detail::tvec4<T> Result;
00375 memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4<T>));
00376 return Result;
00377 }
00378
00381 template<typename T>
00382 GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2x2(T const * const ptr)
00383 {
00384 detail::tmat2x2<T> Result;
00385 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2<T>));
00386 return Result;
00387 }
00388
00391 template<typename T>
00392 GLM_FUNC_QUALIFIER detail::tmat2x3<T> make_mat2x3(T const * const ptr)
00393 {
00394 detail::tmat2x3<T> Result;
00395 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3<T>));
00396 return Result;
00397 }
00398
00401 template<typename T>
00402 GLM_FUNC_QUALIFIER detail::tmat2x4<T> make_mat2x4(T const * const ptr)
00403 {
00404 detail::tmat2x4<T> Result;
00405 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4<T>));
00406 return Result;
00407 }
00408
00411 template<typename T>
00412 GLM_FUNC_QUALIFIER detail::tmat3x2<T> make_mat3x2(T const * const ptr)
00413 {
00414 detail::tmat3x2<T> Result;
00415 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2<T>));
00416 return Result;
00417 }
00418
00421 template<typename T>
00422 GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3x3(T const * const ptr)
00423 {
00424 detail::tmat3x3<T> Result;
00425 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3<T>));
00426 return Result;
00427 }
00428
00431 template<typename T>
00432 GLM_FUNC_QUALIFIER detail::tmat3x4<T> make_mat3x4(T const * const ptr)
00433 {
00434 detail::tmat3x4<T> Result;
00435 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4<T>));
00436 return Result;
00437 }
00438
00441 template<typename T>
00442 GLM_FUNC_QUALIFIER detail::tmat4x2<T> make_mat4x2(T const * const ptr)
00443 {
00444 detail::tmat4x2<T> Result;
00445 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2<T>));
00446 return Result;
00447 }
00448
00451 template<typename T>
00452 GLM_FUNC_QUALIFIER detail::tmat4x3<T> make_mat4x3(T const * const ptr)
00453 {
00454 detail::tmat4x3<T> Result;
00455 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3<T>));
00456 return Result;
00457 }
00458
00461 template<typename T>
00462 GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4x4(T const * const ptr)
00463 {
00464 detail::tmat4x4<T> Result;
00465 memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4<T>));
00466 return Result;
00467 }
00468
00471 template<typename T>
00472 GLM_FUNC_QUALIFIER detail::tmat2x2<T> make_mat2(T const * const ptr)
00473 {
00474 return make_mat2x2(ptr);
00475 }
00476
00479 template<typename T>
00480 GLM_FUNC_QUALIFIER detail::tmat3x3<T> make_mat3(T const * const ptr)
00481 {
00482 return make_mat3x3(ptr);
00483 }
00484
00487 template<typename T>
00488 GLM_FUNC_QUALIFIER detail::tmat4x4<T> make_mat4(T const * const ptr)
00489 {
00490 return make_mat4x4(ptr);
00491 }
00492
00495 template<typename T>
00496 GLM_FUNC_QUALIFIER detail::tquat<T> make_quat(T const * const ptr)
00497 {
00498 detail::tquat<T> Result;
00499 memcpy(value_ptr(Result), ptr, sizeof(detail::tquat<T>));
00500 return Result;
00501 }
00502
00504 }
00505
00506 #include "type_ptr.inl"
00507
00508 #endif//GLM_GTC_type_ptr
00509