diff --git a/glm/detail/type_mat2x2.hpp b/glm/detail/type_mat2x2.hpp index 35d6a408..91351880 100644 --- a/glm/detail/type_mat2x2.hpp +++ b/glm/detail/type_mat2x2.hpp @@ -92,15 +92,11 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat2x2( - U const & x); - template GLM_FUNC_DECL explicit tmat2x2( U const & x1, V const & y1, M const & x2, N const & y2); - + template GLM_FUNC_DECL explicit tmat2x2( tvec2 const & v1, diff --git a/glm/detail/type_mat2x2.inl b/glm/detail/type_mat2x2.inl index 6046d451..e3e77a7a 100644 --- a/glm/detail/type_mat2x2.inl +++ b/glm/detail/type_mat2x2.inl @@ -154,18 +154,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat2x2::tmat2x2 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec2(static_cast(s), Zero); - this->value[1] = tvec2(Zero, value_type(s)); - } - template template GLM_FUNC_QUALIFIER tmat2x2::tmat2x2 diff --git a/glm/detail/type_mat2x3.hpp b/glm/detail/type_mat2x3.hpp index 21cc8d01..1299bd22 100644 --- a/glm/detail/type_mat2x3.hpp +++ b/glm/detail/type_mat2x3.hpp @@ -82,10 +82,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat2x3( - U const & x); - template GLM_FUNC_DECL explicit tmat2x3( X1 const & x1, Y1 const & y1, Z1 const & z1, diff --git a/glm/detail/type_mat2x3.inl b/glm/detail/type_mat2x3.inl index 13becfc9..b269908d 100644 --- a/glm/detail/type_mat2x3.inl +++ b/glm/detail/type_mat2x3.inl @@ -153,18 +153,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat2x3::tmat2x3 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec3(static_cast(s), Zero, Zero); - this->value[1] = tvec3(Zero, value_type(s), Zero); - } - template template < typename X1, typename Y1, typename Z1, @@ -173,7 +161,7 @@ namespace detail ( X1 const & x1, Y1 const & y1, Z1 const & z1, X2 const & x2, Y2 const & y2, Z2 const & z2 - ) + ) { this->value[0] = col_type(static_cast(x1), value_type(y1), value_type(z1)); this->value[1] = col_type(static_cast(x2), value_type(y2), value_type(z2)); @@ -185,7 +173,7 @@ namespace detail ( tvec3 const & v1, tvec3 const & v2 - ) + ) { this->value[0] = col_type(v1); this->value[1] = col_type(v2); diff --git a/glm/detail/type_mat2x4.hpp b/glm/detail/type_mat2x4.hpp index 09b43f02..9d0165f6 100644 --- a/glm/detail/type_mat2x4.hpp +++ b/glm/detail/type_mat2x4.hpp @@ -82,10 +82,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat2x4( - U const & x); - template < typename X1, typename Y1, typename Z1, typename W1, typename X2, typename Y2, typename Z2, typename W2> diff --git a/glm/detail/type_mat2x4.inl b/glm/detail/type_mat2x4.inl index 93b2cc8d..881db381 100644 --- a/glm/detail/type_mat2x4.inl +++ b/glm/detail/type_mat2x4.inl @@ -156,18 +156,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat2x4::tmat2x4 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec4(static_cast(s), Zero, Zero, Zero); - this->value[1] = tvec4(Zero, value_type(s), Zero, Zero); - } - template template < typename X1, typename Y1, typename Z1, typename W1, @@ -176,7 +164,7 @@ namespace detail ( X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1, X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2 - ) + ) { this->value[0] = col_type(static_cast(x1), value_type(y1), value_type(z1), value_type(w1)); this->value[1] = col_type(static_cast(x2), value_type(y2), value_type(z2), value_type(w2)); @@ -188,7 +176,7 @@ namespace detail ( tvec4 const & v1, tvec4 const & v2 - ) + ) { this->value[0] = col_type(v1); this->value[1] = col_type(v2); diff --git a/glm/detail/type_mat3x2.hpp b/glm/detail/type_mat3x2.hpp index 717c6092..76d2f425 100644 --- a/glm/detail/type_mat3x2.hpp +++ b/glm/detail/type_mat3x2.hpp @@ -84,10 +84,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat3x2( - U const & x); - template< typename X1, typename Y1, typename X2, typename Y2, diff --git a/glm/detail/type_mat3x2.inl b/glm/detail/type_mat3x2.inl index 7f96cb4d..3b7d9a4a 100644 --- a/glm/detail/type_mat3x2.inl +++ b/glm/detail/type_mat3x2.inl @@ -163,19 +163,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat3x2::tmat3x2 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec2(static_cast(s), Zero); - this->value[1] = tvec2(Zero, value_type(s)); - this->value[2] = tvec2(Zero); - } - template template < typename X1, typename Y1, @@ -186,13 +173,13 @@ namespace detail X1 const & x1, Y1 const & y1, X2 const & x2, Y2 const & y2, X3 const & x3, Y3 const & y3 - ) + ) { this->value[0] = col_type(static_cast(x1), value_type(y1)); this->value[1] = col_type(static_cast(x2), value_type(y2)); this->value[2] = col_type(static_cast(x3), value_type(y3)); } - + template template GLM_FUNC_QUALIFIER tmat3x2::tmat3x2 @@ -200,7 +187,7 @@ namespace detail tvec2 const & v1, tvec2 const & v2, tvec2 const & v3 - ) + ) { this->value[0] = col_type(v1); this->value[1] = col_type(v2); diff --git a/glm/detail/type_mat3x3.hpp b/glm/detail/type_mat3x3.hpp index 2d2c8243..07112d7c 100644 --- a/glm/detail/type_mat3x3.hpp +++ b/glm/detail/type_mat3x3.hpp @@ -93,10 +93,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat3x3( - U const & x); - template< typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2, diff --git a/glm/detail/type_mat3x3.inl b/glm/detail/type_mat3x3.inl index f017ff9e..9dff121b 100644 --- a/glm/detail/type_mat3x3.inl +++ b/glm/detail/type_mat3x3.inl @@ -166,19 +166,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat3x3::tmat3x3 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec3(static_cast(s), Zero, Zero); - this->value[1] = tvec3(Zero, value_type(s), Zero); - this->value[2] = tvec3(Zero, Zero, value_type(s)); - } - template template < typename X1, typename Y1, typename Z1, diff --git a/glm/detail/type_mat3x4.hpp b/glm/detail/type_mat3x4.hpp index 611b0d3a..b368b274 100644 --- a/glm/detail/type_mat3x4.hpp +++ b/glm/detail/type_mat3x4.hpp @@ -84,10 +84,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat3x4( - U const & x); - template< typename X1, typename Y1, typename Z1, typename W1, typename X2, typename Y2, typename Z2, typename W2, diff --git a/glm/detail/type_mat3x4.inl b/glm/detail/type_mat3x4.inl index 5c39bd84..390a1b84 100644 --- a/glm/detail/type_mat3x4.inl +++ b/glm/detail/type_mat3x4.inl @@ -139,19 +139,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat3x4::tmat3x4 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec4(static_cast(s), Zero, Zero, Zero); - this->value[1] = tvec4(Zero, value_type(s), Zero, Zero); - this->value[2] = tvec4(Zero, Zero, value_type(s), Zero); - } - template template < typename X1, typename Y1, typename Z1, typename W1, diff --git a/glm/detail/type_mat4x2.hpp b/glm/detail/type_mat4x2.hpp index caecb2c4..2268c179 100644 --- a/glm/detail/type_mat4x2.hpp +++ b/glm/detail/type_mat4x2.hpp @@ -86,10 +86,7 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat4x2( - U const & x); - + template< typename X1, typename Y1, typename X2, typename Y2, @@ -100,7 +97,7 @@ namespace detail X2 const & x2, Y2 const & y2, X3 const & x3, Y3 const & y3, X4 const & x4, Y4 const & y4); - + template GLM_FUNC_DECL explicit tmat4x2( tvec2 const & v1, @@ -111,7 +108,7 @@ namespace detail // Matrix conversions template GLM_FUNC_DECL explicit tmat4x2(tmat4x2 const & m); - + GLM_FUNC_DECL explicit tmat4x2(tmat2x2 const & x); GLM_FUNC_DECL explicit tmat4x2(tmat3x3 const & x); GLM_FUNC_DECL explicit tmat4x2(tmat4x4 const & x); diff --git a/glm/detail/type_mat4x2.inl b/glm/detail/type_mat4x2.inl index 89396ced..211c380d 100644 --- a/glm/detail/type_mat4x2.inl +++ b/glm/detail/type_mat4x2.inl @@ -144,20 +144,7 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat4x2::tmat4x2 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec2(static_cast(s), Zero); - this->value[1] = tvec2(Zero, value_type(s)); - this->value[2] = tvec2(Zero, Zero); - this->value[3] = tvec2(Zero, Zero); - } - + template template < typename X1, typename Y1, @@ -170,7 +157,7 @@ namespace detail X2 const & x2, Y2 const & y2, X3 const & x3, Y3 const & y3, X4 const & x4, Y4 const & y4 - ) + ) { this->value[0] = col_type(static_cast(x1), value_type(y1)); this->value[1] = col_type(static_cast(x2), value_type(y2)); @@ -186,7 +173,7 @@ namespace detail tvec2 const & v2, tvec2 const & v3, tvec2 const & v4 - ) + ) { this->value[0] = col_type(v1); this->value[1] = col_type(v2); diff --git a/glm/detail/type_mat4x3.hpp b/glm/detail/type_mat4x3.hpp index b5151daf..041a9834 100644 --- a/glm/detail/type_mat4x3.hpp +++ b/glm/detail/type_mat4x3.hpp @@ -86,9 +86,6 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat4x3( - U const & x); template < typename X1, typename Y1, typename Z1, diff --git a/glm/detail/type_mat4x3.inl b/glm/detail/type_mat4x3.inl index 69a10570..389219a7 100644 --- a/glm/detail/type_mat4x3.inl +++ b/glm/detail/type_mat4x3.inl @@ -169,20 +169,7 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat4x3::tmat4x3 - ( - U const & s - ) - { - value_type const Zero(0); - this->value[0] = tvec3(static_cast(s), Zero, Zero); - this->value[1] = tvec3(Zero, value_type(s), Zero); - this->value[2] = tvec3(Zero, Zero, value_type(s)); - this->value[3] = tvec3(Zero, Zero, Zero); - } - + template template < typename X1, typename Y1, typename Z1, @@ -195,7 +182,7 @@ namespace detail X2 const & x2, Y2 const & y2, Z2 const & z2, X3 const & x3, Y3 const & y3, Z3 const & z3, X4 const & x4, Y4 const & y4, Z4 const & z4 - ) + ) { this->value[0] = col_type(static_cast(x1), value_type(y1), value_type(z1)); this->value[1] = col_type(static_cast(x2), value_type(y2), value_type(z2)); diff --git a/glm/detail/type_mat4x4.hpp b/glm/detail/type_mat4x4.hpp index f91ef083..9082f65c 100644 --- a/glm/detail/type_mat4x4.hpp +++ b/glm/detail/type_mat4x4.hpp @@ -99,10 +99,7 @@ namespace detail ////////////////////////////////////// // Conversions - template - GLM_FUNC_DECL explicit tmat4x4( - U const & x); - + template < typename X1, typename Y1, typename Z1, typename W1, typename X2, typename Y2, typename Z2, typename W2, diff --git a/glm/detail/type_mat4x4.inl b/glm/detail/type_mat4x4.inl index a52da05b..01f55d52 100644 --- a/glm/detail/type_mat4x4.inl +++ b/glm/detail/type_mat4x4.inl @@ -191,22 +191,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - template - template - GLM_FUNC_QUALIFIER tmat4x4::tmat4x4 - ( - U const & s - ) - { - GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || std::numeric_limits::is_integer, "*mat4x4 constructor only takes float and integer types"); - - value_type const Zero(0); - this->value[0] = tvec4(static_cast(s), Zero, Zero, Zero); - this->value[1] = tvec4(Zero, value_type(s), Zero, Zero); - this->value[2] = tvec4(Zero, Zero, value_type(s), Zero); - this->value[3] = tvec4(Zero, Zero, Zero, value_type(s)); - } - template template < typename X1, typename Y1, typename Z1, typename W1, diff --git a/glm/detail/type_vec2.hpp b/glm/detail/type_vec2.hpp index c093d649..e9a3970c 100644 --- a/glm/detail/type_vec2.hpp +++ b/glm/detail/type_vec2.hpp @@ -137,10 +137,6 @@ namespace detail ////////////////////////////////////// // Conversion constructors - //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) - template - GLM_FUNC_DECL explicit tvec2( - U const & x); //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template GLM_FUNC_DECL explicit tvec2( diff --git a/glm/detail/type_vec2.inl b/glm/detail/type_vec2.inl index 420f60d1..57855e85 100644 --- a/glm/detail/type_vec2.inl +++ b/glm/detail/type_vec2.inl @@ -110,16 +110,6 @@ namespace detail ////////////////////////////////////// // Conversion scalar constructors - - template - template - GLM_FUNC_QUALIFIER tvec2::tvec2 - ( - U const & x - ) : - x(static_cast(x)), - y(static_cast(x)) - {} template template diff --git a/glm/detail/type_vec3.hpp b/glm/detail/type_vec3.hpp index d73e7639..3985d6e4 100644 --- a/glm/detail/type_vec3.hpp +++ b/glm/detail/type_vec3.hpp @@ -128,16 +128,12 @@ namespace detail ////////////////////////////////////// // Conversion scalar constructors - //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) - template - GLM_FUNC_DECL explicit tvec3( - U const & x); //! Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template GLM_FUNC_DECL explicit tvec3( U const & x, V const & y, - W const & z); + W const & z); ////////////////////////////////////// // Conversion vector constructors diff --git a/glm/detail/type_vec3.inl b/glm/detail/type_vec3.inl index 60b3ba6d..e039a69d 100644 --- a/glm/detail/type_vec3.inl +++ b/glm/detail/type_vec3.inl @@ -117,17 +117,6 @@ namespace detail ////////////////////////////////////// // Conversion scalar constructors - - template - template - GLM_FUNC_QUALIFIER tvec3::tvec3 - ( - U const & s - ) : - x(static_cast(s)), - y(static_cast(s)), - z(static_cast(s)) - {} template template diff --git a/glm/detail/type_vec4.hpp b/glm/detail/type_vec4.hpp index 39192c3a..91768c7d 100644 --- a/glm/detail/type_vec4.hpp +++ b/glm/detail/type_vec4.hpp @@ -131,10 +131,6 @@ namespace detail ////////////////////////////////////// // Conversion scalar constructors - /// Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) - template - GLM_FUNC_DECL explicit tvec4( - U const & x); /// Explicit converions (From section 5.4.1 Conversion and scalar constructors of GLSL 1.30.08 specification) template GLM_FUNC_DECL explicit tvec4( diff --git a/glm/detail/type_vec4.inl b/glm/detail/type_vec4.inl index d6688a2e..f7e688de 100644 --- a/glm/detail/type_vec4.inl +++ b/glm/detail/type_vec4.inl @@ -125,18 +125,6 @@ namespace detail ////////////////////////////////////// // Conversion scalar constructors - template - template - GLM_FUNC_QUALIFIER tvec4::tvec4 - ( - U const & x - ) : - x(static_cast(x)), - y(static_cast(x)), - z(static_cast(x)), - w(static_cast(x)) - {} - template template GLM_FUNC_QUALIFIER tvec4::tvec4 diff --git a/readme.txt b/readme.txt index 90588369..7dda35f3 100644 --- a/readme.txt +++ b/readme.txt @@ -40,7 +40,8 @@ http://glm.g-truc.net/glm.pdf GLM 0.9.5.1: 2014-XX-XX -------------------------------------------------------------------------------- - Fixed angle and orientedAngle that sometimes return NaN values (#145) -- Deprecated degrees for function parameters and display a message. +- Deprecated degrees for function parameters and display a message +- Added possible static_cast conversion of GLM types (#72) ================================================================================ GLM 0.9.5.0: 2013-12-25 diff --git a/test/core/core_type_cast.cpp b/test/core/core_type_cast.cpp index cc5c600c..a58d3c98 100644 --- a/test/core/core_type_cast.cpp +++ b/test/core/core_type_cast.cpp @@ -27,8 +27,9 @@ int test_vec2_cast() glm::mediump_vec2 G = static_cast(A); glm::highp_vec2 H = static_cast(A); - //my_vec2 I; - //glm::vec2 J = static_cast(I); + my_vec2 I; + glm::vec2 J = static_cast(I); + glm::vec2 K(7.8); int Error(0); diff --git a/test/gtc/gtc_matrix_transform.cpp b/test/gtc/gtc_matrix_transform.cpp index 4ecad93e..21a5958f 100644 --- a/test/gtc/gtc_matrix_transform.cpp +++ b/test/gtc/gtc_matrix_transform.cpp @@ -7,15 +7,21 @@ // File : test/gtc/matrix_transform.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// +#define GLM_FORCE_RADIANS #include #include +#include int main() { int Error = 0; - glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f); + glm::mat4 Projection = glm::perspective(glm::pi() * 0.25f, 4.0f / 3.0f, 0.1f, 100.0f); glm::mat4 Pick = glm::pickMatrix(glm::vec2(1, 2), glm::vec2(3, 4), glm::ivec4(0, 0, 320, 240)); + glm::lowp_vec3 v(1.0); + glm::lowp_mat4 m(0); + glm::lowp_mat4 t = glm::translate(m, v); + return Error; }