|  | 
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 // Dependency: 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 }//namespace glm 00505 00506 #include "type_ptr.inl" 00507 00508 #endif//GLM_GTC_type_ptr 00509
 1.7.3
 1.7.3