diff --git a/CMakeLists.txt b/CMakeLists.txt index f0e17d99..62592ca5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,7 @@ cmake_minimum_required(VERSION 2.6 FATAL_ERROR) cmake_policy(VERSION 2.6) project(glm) -#Delayed for GLM 0.9.2 -#enable_testing() +enable_testing() add_definitions(-D_CRT_SECURE_NO_WARNINGS) #add_definitions(-pedantic) diff --git a/glm/core/func_common.hpp b/glm/core/func_common.hpp index c9cdc8ba..00f9333c 100644 --- a/glm/core/func_common.hpp +++ b/glm/core/func_common.hpp @@ -249,21 +249,27 @@ namespace glm //! Splits x into a floating-point significand in the range //! [0.5, 1.0) and an integral exponent of two, such that: //! x = significand * exp(2, exponent) + //! //! The significand is returned by the function and the //! exponent is returned in the parameter exp. For a //! floating-point value of zero, the significant and exponent //! are both zero. For a floating-point value that is an //! infinity or is not a number, the results are undefined. - //! (From GLSL 4.00.08 specification, section 8.3) + //! + //! \li GLSL frexp man page + //! \li GLSL 4.00.08 specification, section 8.3 template genType frexp(genType const & x, genIType & exp); //! Builds a floating-point number from x and the //! corresponding integral exponent of two in exp, returning: //! significand * exp(2, exponent) + //! //! If this product is too large to be represented in the //! floating-point type, the result is undefined. - //! (From GLSL 4.00.08 specification, section 8.3) + //! + //! \li GLSL ldexp man page; + //! \li GLSL 4.00.08 specification, section 8.3 template genType ldexp(genType const & x, genIType const & exp); diff --git a/glm/core/setup.hpp b/glm/core/setup.hpp index 2d33c9e2..8a538915 100644 --- a/glm/core/setup.hpp +++ b/glm/core/setup.hpp @@ -13,10 +13,10 @@ /////////////////////////////////////////////////////////////////////////////////////////////////// // Version -#define GLM_VERSION 91 +#define GLM_VERSION 92 #define GLM_VERSION_MAJOR 0 #define GLM_VERSION_MINOR 9 -#define GLM_VERSION_PATCH 1 +#define GLM_VERSION_PATCH 2 #define GLM_VERSION_REVISION 0 /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/glm/gtc/type_ptr.hpp b/glm/gtc/type_ptr.hpp index 4eb1881b..b651b574 100644 --- a/glm/gtc/type_ptr.hpp +++ b/glm/gtc/type_ptr.hpp @@ -294,6 +294,151 @@ namespace glm return &(mat[0].x); } + //! Build a vector from a pointer. + //! From GLM_GTC_type_ptr extension. + template + inline 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 + inline 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 + inline 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 + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline 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. + //! From GLM_GTC_type_ptr extension. + template + inline detail::tmat2x2 make_mat2(T const * const ptr) + { + return make_mat2x2(Result); + } + + //! Build a matrix from a pointer. + //! From GLM_GTC_type_ptr extension. + template + inline detail::tmat3 make_mat3(T const * const ptr) + { + return make_mat3x3(Result); + } + + //! Build a matrix from a pointer. + //! From GLM_GTC_type_ptr extension. + template + inline detail::tmat4 make_mat4(T const * const ptr) + { + return make_mat4x4(Result); + } + ///@} }//namespace type_ptr diff --git a/glm/gtx/compatibility.inl b/glm/gtx/compatibility.inl index cd6b8ea7..33b9cefe 100644 --- a/glm/gtx/compatibility.inl +++ b/glm/gtx/compatibility.inl @@ -19,7 +19,7 @@ GLM_FUNC_QUALIFIER bool isfinite( #if(GLM_COMPILER & GLM_COMPILER_VC) return _finite(x); #else//(GLM_COMPILER & GLM_COMPILER_GCC) - return std::isfinite(x); + return std::isfinite(x) != 0; #endif } @@ -61,7 +61,7 @@ GLM_FUNC_QUALIFIER bool isinf( #if(GLM_COMPILER & GLM_COMPILER_VC) return _fpclass(x) == _FPCLASS_NINF || _fpclass(x) == _FPCLASS_PINF; #else - return std::isinf(x); + return std::isinf(x) != 0; #endif } @@ -102,7 +102,7 @@ GLM_FUNC_QUALIFIER bool isnan(genType const & x) #if(GLM_COMPILER & GLM_COMPILER_VC) return _isnan(x); #else - return std::isnan(x); + return std::isnan(x) != 0; #endif }