diff --git a/glm/gtc/noise.hpp b/glm/gtc/noise.hpp index 71edfef7..f41c9749 100644 --- a/glm/gtc/noise.hpp +++ b/glm/gtc/noise.hpp @@ -54,20 +54,20 @@ namespace glm /// @{ /// Classic perlin noise. - /// From GLM_GTC_noise extension. + /// @see gtc_noise template class vecType> T perlin( vecType const & p); /// Periodic perlin noise. - /// From GLM_GTC_noise extension. + /// @see gtc_noise template class vecType> T perlin( vecType const & p, vecType const & rep); /// Simplex noise. - /// From GLM_GTC_noise extension. + /// @see gtc_noise template class vecType> T simplex( vecType const & p); diff --git a/glm/gtc/type_ptr.hpp b/glm/gtc/type_ptr.hpp index 7684630f..8ae4e9da 100644 --- a/glm/gtc/type_ptr.hpp +++ b/glm/gtc/type_ptr.hpp @@ -73,432 +73,92 @@ namespace glm { /// @addtogroup gtc_type_ptr /// @{ - + /// Return the constant address to the data of the input parameter. - /// From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tvec2 const & vec - ) - { - return &(vec.x); - } + /// @see gtc_type_ptr + template + typename genType::value_type const * value_ptr(genType const & vec); - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. + /// Build a vector from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tvec2 & vec - ) - { - return &(vec.x); - } + detail::tvec2 make_vec2(T const * const ptr); - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. + /// Build a vector from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tvec3 const & vec - ) - { - return &(vec.x); - } + detail::tvec3 make_vec3(T const * const ptr); - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. + /// Build a vector from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tvec3 & vec - ) - { - return &(vec.x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tvec4 const & vec - ) - { - return &(vec.x); - } + detail::tvec4 make_vec4(T const * const ptr); - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tvec4 & vec - ) - { - return &(vec.x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat2x2 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat2x2 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat3x3 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat3x3 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat4x4 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat4x4 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat2x3 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat2x3 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat3x2 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat3x2 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat2x4 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat2x4 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat4x2 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat4x2 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat3x4 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr - ( - detail::tmat3x4 & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tmat4x3 const & mat - ) - { - return &(mat[0].x); - } - - //! Return the constant address to the data of the input parameter. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T const * value_ptr - ( - detail::tquat const & q - ) - { - return &(q[0]); - } - - //! Get the address of the matrix content. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3 & mat) - { - return &(mat[0].x); - } - - //! Build a vector from a pointer. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER detail::tvec2 make_vec2(T const * const ptr) - { - detail::tvec2 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2)); - return Result; - } - - //! Build a vector from a pointer. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER detail::tvec3 make_vec3(T const * const ptr) - { - detail::tvec3 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3)); - return Result; - } - - //! Build a vector from a pointer. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER detail::tvec4 make_vec4(T const * const ptr) - { - detail::tvec4 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4)); - return Result; - } - - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. - template - GLM_FUNC_QUALIFIER detail::tmat2x2 make_mat2x2(T const * const ptr) - { - detail::tmat2x2 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2)); - return Result; - } + detail::tmat2x2 make_mat2x2(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat2x3 make_mat2x3(T const * const ptr) - { - detail::tmat2x3 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3)); - return Result; - } + detail::tmat2x3 make_mat2x3(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat2x4 make_mat2x4(T const * const ptr) - { - detail::tmat2x4 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4)); - return Result; - } + detail::tmat2x4 make_mat2x4(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat3x2 make_mat3x2(T const * const ptr) - { - detail::tmat3x2 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2)); - return Result; - } + detail::tmat3x2 make_mat3x2(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat3x3 make_mat3x3(T const * const ptr) - { - detail::tmat3x3 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3)); - return Result; - } + detail::tmat3x3 make_mat3x3(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat3x4 make_mat3x4(T const * const ptr) - { - detail::tmat3x4 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4)); - return Result; - } + detail::tmat3x4 make_mat3x4(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat4x2 make_mat4x2(T const * const ptr) - { - detail::tmat4x2 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2)); - return Result; - } + detail::tmat4x2 make_mat4x2( + T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat4x3 make_mat4x3(T const * const ptr) - { - detail::tmat4x3 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3)); - return Result; - } + detail::tmat4x3 make_mat4x3(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat4x4 make_mat4x4(T const * const ptr) - { - detail::tmat4x4 Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4)); - return Result; - } + detail::tmat4x4 make_mat4x4(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat2x2 make_mat2(T const * const ptr) - { - return make_mat2x2(ptr); - } + detail::tmat2x2 make_mat2(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat3x3 make_mat3(T const * const ptr) - { - return make_mat3x3(ptr); - } + detail::tmat3x3 make_mat3(T const * const ptr); - //! Build a matrix from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a matrix from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tmat4x4 make_mat4(T const * const ptr) - { - return make_mat4x4(ptr); - } + detail::tmat4x4 make_mat4(T const * const ptr); - //! Build a quaternion from a pointer. - //! From GLM_GTC_type_ptr extension. + /// Build a quaternion from a pointer. + /// @see gtc_type_ptr template - GLM_FUNC_QUALIFIER detail::tquat make_quat(T const * const ptr) - { - detail::tquat Result; - memcpy(value_ptr(Result), ptr, sizeof(detail::tquat)); - return Result; - } + detail::tquat make_quat(T const * const ptr); /// @} }//namespace glm diff --git a/glm/gtc/type_ptr.inl b/glm/gtc/type_ptr.inl index f578ca44..24712e67 100644 --- a/glm/gtc/type_ptr.inl +++ b/glm/gtc/type_ptr.inl @@ -22,11 +22,441 @@ /// /// @ref gtc_type_ptr /// @file glm/gtc/type_ptr.inl -/// @date 2011-06-15 / 2011-06-15 +/// @date 2011-06-15 / 2011-12-07 /// @author Christophe Riccio /////////////////////////////////////////////////////////////////////////////////// namespace glm -{ +{ + /// @addtogroup gtc_type_ptr + /// @{ + + /// Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tvec2 const & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tvec2 & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tvec3 const & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tvec3 & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tvec4 const & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + //! From GLM_GTC_type_ptr extension. + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tvec4 & vec + ) + { + return &(vec.x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat2x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat2x2 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat3x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat3x3 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat4x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + //! From GLM_GTC_type_ptr extension. + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat4x4 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat2x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat2x3 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat3x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat3x2 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat2x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat2x4 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat4x2 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat4x2 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat3x4 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr + ( + detail::tmat3x4 & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tmat4x3 const & mat + ) + { + return &(mat[0].x); + } + + //! Return the constant address to the data of the input parameter. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T const * value_ptr + ( + detail::tquat const & q + ) + { + return &(q[0]); + } + + //! Get the address of the matrix content. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER T * value_ptr(detail::tmat4x3 & mat) + { + return &(mat[0].x); + } + + //! Build a vector from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tvec2 make_vec2(T const * const ptr) + { + detail::tvec2 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tvec2)); + return Result; + } + + //! Build a vector from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tvec3 make_vec3(T const * const ptr) + { + detail::tvec3 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tvec3)); + return Result; + } + + //! Build a vector from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tvec4 make_vec4(T const * const ptr) + { + detail::tvec4 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tvec4)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat2x2 make_mat2x2(T const * const ptr) + { + detail::tmat2x2 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x2)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat2x3 make_mat2x3(T const * const ptr) + { + detail::tmat2x3 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x3)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat2x4 make_mat2x4(T const * const ptr) + { + detail::tmat2x4 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat2x4)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat3x2 make_mat3x2(T const * const ptr) + { + detail::tmat3x2 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x2)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat3x3 make_mat3x3(T const * const ptr) + { + detail::tmat3x3 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x3)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat3x4 make_mat3x4(T const * const ptr) + { + detail::tmat3x4 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat3x4)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat4x2 make_mat4x2(T const * const ptr) + { + detail::tmat4x2 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x2)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat4x3 make_mat4x3(T const * const ptr) + { + detail::tmat4x3 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x3)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat4x4 make_mat4x4(T const * const ptr) + { + detail::tmat4x4 Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tmat4x4)); + return Result; + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat2x2 make_mat2(T const * const ptr) + { + return make_mat2x2(ptr); + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat3x3 make_mat3(T const * const ptr) + { + return make_mat3x3(ptr); + } + + //! Build a matrix from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tmat4x4 make_mat4(T const * const ptr) + { + return make_mat4x4(ptr); + } + + //! Build a quaternion from a pointer. + /// @see gtc_type_ptr + template + GLM_FUNC_QUALIFIER detail::tquat make_quat(T const * const ptr) + { + detail::tquat Result; + memcpy(value_ptr(Result), ptr, sizeof(detail::tquat)); + return Result; + } + + /// @} +}//namespace glm -}