Fixed GLM_FORCE_SIZE_FUNC support overlook #245. Added uninitiallized constructor to quaternion. Fixed lack of conscistency or quaternion constructors with other types. Various uninitilized constructor optimizations

This commit is contained in:
Christophe Riccio 2014-10-12 01:24:28 +02:00
parent 2df7addc05
commit c2d542562e
27 changed files with 289 additions and 238 deletions

Binary file not shown.

View File

@ -82,7 +82,7 @@ namespace detail
GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<bool, P> const & a) GLM_FUNC_QUALIFIER static vecType<T, P> call(vecType<T, P> const & x, vecType<T, P> const & y, vecType<bool, P> const & a)
{ {
vecType<T, P> Result; vecType<T, P> Result;
for(length_t i = 0; i < x.length(); ++i) for(length_t i = 0; i < detail::component_count(x); ++i)
Result[i] = a[i] ? y[i] : x[i]; Result[i] = a[i] ? y[i] : x[i];
return Result; return Result;
} }

View File

@ -60,7 +60,7 @@ namespace detail
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec3>::type call(tvec3<T, P> const & c, tvec3<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec3>::type call(tvec3<T, P> const & c, tvec3<T, P> const & r)
{ {
tmat3x3<T, P> m(tmat3x3<T, P>::_null); tmat3x3<T, P> m(tmat3x3<T, P>::_null);
for(length_t i(0); i < m.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(m); ++i)
m[i] = c * r[i]; m[i] = c * r[i];
return m; return m;
} }
@ -72,7 +72,7 @@ namespace detail
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec4>::type call(tvec4<T, P> const & c, tvec4<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec4>::type call(tvec4<T, P> const & c, tvec4<T, P> const & r)
{ {
tmat4x4<T, P> m(tmat4x4<T, P>::_null); tmat4x4<T, P> m(tmat4x4<T, P>::_null);
for(length_t i(0); i < m.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(m); ++i)
m[i] = c * r[i]; m[i] = c * r[i];
return m; return m;
} }
@ -424,7 +424,7 @@ namespace detail
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'matrixCompMult' only accept floating-point inputs"); GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'matrixCompMult' only accept floating-point inputs");
matType<T, P> result(matType<T, P>::_null); matType<T, P> result(matType<T, P>::_null);
for(length_t i = 0; i < result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(result); ++i)
result[i] = x[i] * y[i]; result[i] = x[i] * y[i];
return result; return result;
} }

View File

@ -39,10 +39,10 @@ namespace glm
{ {
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer,
"Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors"); "Invalid template instantiation of 'lessThan', GLM vector types required floating-point or integer value types vectors");
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] < y[i]; Result[i] = x[i] < y[i];
return Result; return Result;
@ -57,10 +57,10 @@ namespace glm
{ {
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer,
"Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors"); "Invalid template instantiation of 'lessThanEqual', GLM vector types required floating-point or integer value types vectors");
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] <= y[i]; Result[i] = x[i] <= y[i];
return Result; return Result;
} }
@ -74,10 +74,10 @@ namespace glm
{ {
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer,
"Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors"); "Invalid template instantiation of 'greaterThan', GLM vector types required floating-point or integer value types vectors");
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] > y[i]; Result[i] = x[i] > y[i];
return Result; return Result;
} }
@ -91,10 +91,10 @@ namespace glm
{ {
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer, GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559 || std::numeric_limits<T>::is_integer,
"Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors"); "Invalid template instantiation of 'greaterThanEqual', GLM vector types required floating-point or integer value types vectors");
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] >= y[i]; Result[i] = x[i] >= y[i];
return Result; return Result;
} }
@ -106,10 +106,10 @@ namespace glm
vecType<T, P> const & y vecType<T, P> const & y
) )
{ {
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] == y[i]; Result[i] = x[i] == y[i];
return Result; return Result;
} }
@ -121,10 +121,10 @@ namespace glm
vecType<T, P> const & y vecType<T, P> const & y
) )
{ {
assert(x.length() == y.length()); assert(detail::component_count(x) == detail::component_count(y));
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] != y[i]; Result[i] = x[i] != y[i];
return Result; return Result;
} }
@ -133,7 +133,7 @@ namespace glm
GLM_FUNC_QUALIFIER bool any(vecType<bool, P> const & v) GLM_FUNC_QUALIFIER bool any(vecType<bool, P> const & v)
{ {
bool Result = false; bool Result = false;
for(int i = 0; i < v.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(v); ++i)
Result = Result || v[i]; Result = Result || v[i];
return Result; return Result;
} }
@ -142,7 +142,7 @@ namespace glm
GLM_FUNC_QUALIFIER bool all(vecType<bool, P> const & v) GLM_FUNC_QUALIFIER bool all(vecType<bool, P> const & v)
{ {
bool Result = true; bool Result = true;
for(int i = 0; i < v.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(v); ++i)
Result = Result && v[i]; Result = Result && v[i];
return Result; return Result;
} }
@ -151,7 +151,7 @@ namespace glm
GLM_FUNC_QUALIFIER vecType<bool, P> not_(vecType<bool, P> const & v) GLM_FUNC_QUALIFIER vecType<bool, P> not_(vecType<bool, P> const & v)
{ {
typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null); typename vecType<bool, P>::bool_type Result(vecType<bool, P>::_null);
for(int i = 0; i < v.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(v); ++i)
Result[i] = !v[i]; Result[i] = !v[i];
return Result; return Result;
} }

View File

@ -757,31 +757,6 @@
# endif # endif
#endif//GLM_MESSAGE #endif//GLM_MESSAGE
///////////////////////////////////////////////////////////////////////////////////////////////////
// Length type
// User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC
namespace glm
{
typedef std::size_t size_t;
#if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC)
typedef std::size_t length_t;
#else
typedef int length_t;
#endif
}//namespace glm
#if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_FORCE_SIZE_T_LENGTH))
# define GLM_MESSAGE_FORCE_SIZE_T_LENGTH
# if defined(GLM_FORCE_SIZE_T_LENGTH)
# pragma message("GLM: .length() returns glm::length_t, a typedef of std::size_t")
# else
# pragma message("GLM: .length() returns glm::length_t, a typedef of int following the GLSL specification")
# pragma message("GLM: #define GLM_FORCE_SIZE_T_LENGTH for .length() to return a std::size_t")
# endif
#endif//GLM_MESSAGE
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
// Qualifiers // Qualifiers
@ -816,3 +791,47 @@ namespace glm
#else #else
# define GLM_CONSTEXPR # define GLM_CONSTEXPR
#endif #endif
///////////////////////////////////////////////////////////////////////////////////////////////////
// Length type
// User defines: GLM_FORCE_SIZE_T_LENGTH GLM_FORCE_SIZE_FUNC
namespace glm
{
typedef std::size_t size_t;
#if defined(GLM_FORCE_SIZE_T_LENGTH) || defined(GLM_FORCE_SIZE_FUNC)
typedef size_t length_t;
#else
typedef int length_t;
#endif
namespace detail
{
template <typename genType>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR length_t component_count(genType const & m)
{
# if GLM_FORCE_SIZE_FUNC
return m.size();
# else
return m.length();
# endif
}
# if GLM_FORCE_SIZE_FUNC
typedef size_t component_count_t;
# else
typedef length_t component_count_t;
# endif
}//namespace detail
}//namespace glm
#if(defined(GLM_MESSAGES) && !defined(GLM_MESSAGE_FORCE_SIZE_T_LENGTH))
# define GLM_MESSAGE_FORCE_SIZE_T_LENGTH
# if defined(GLM_FORCE_SIZE_T_LENGTH)
# pragma message("GLM: .length() returns glm::length_t, a typedef of std::size_t")
# else
# pragma message("GLM: .length() returns glm::length_t, a typedef of int following the GLSL specification")
# pragma message("GLM: #define GLM_FORCE_SIZE_T_LENGTH for .length() to return a size_t")
# endif
#endif//GLM_MESSAGE

View File

@ -25,3 +25,4 @@
/// @date 2011-06-15 / 2011-06-15 /// @date 2011-06-15 / 2011-06-15
/// @author Christophe Riccio /// @author Christophe Riccio
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////

View File

@ -76,6 +76,7 @@
#include "./gtc/type_precision.hpp" #include "./gtc/type_precision.hpp"
#include "./gtc/type_ptr.hpp" #include "./gtc/type_ptr.hpp"
#include "./gtc/ulp.hpp" #include "./gtc/ulp.hpp"
#include "./gtc/vec1.hpp"
#include "./gtx/associated_min_max.hpp" #include "./gtx/associated_min_max.hpp"
#include "./gtx/bit.hpp" #include "./gtx/bit.hpp"
@ -123,7 +124,6 @@
#endif #endif
#include "./gtx/transform.hpp" #include "./gtx/transform.hpp"
#include "./gtx/transform2.hpp" #include "./gtx/transform2.hpp"
#include "./gtx/vec1.hpp"
#include "./gtx/vector_angle.hpp" #include "./gtx/vector_angle.hpp"
#include "./gtx/vector_query.hpp" #include "./gtx/vector_query.hpp"
#include "./gtx/wrap.hpp" #include "./gtx/wrap.hpp"

View File

@ -36,10 +36,10 @@ namespace glm
typename genType::row_type const & x typename genType::row_type const & x
) )
{ {
assert(index >= 0 && index < m[0].length()); assert(index >= 0 && static_cast<detail::component_count_t>(index) < detail::component_count(m[0]));
genType Result = m; genType Result = m;
for(length_t i = 0; i < m.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(m); ++i)
Result[i][index] = x[i]; Result[i][index] = x[i];
return Result; return Result;
} }
@ -51,10 +51,10 @@ namespace glm
length_t const & index length_t const & index
) )
{ {
assert(index >= 0 && index < m[0].length()); assert(index >= 0 && static_cast<detail::component_count_t>(index) < detail::component_count(m[0]));
typename genType::row_type Result; typename genType::row_type Result;
for(length_t i = 0; i < m.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(m); ++i)
Result[i] = m[i][index]; Result[i] = m[i][index];
return Result; return Result;
} }
@ -67,7 +67,7 @@ namespace glm
typename genType::col_type const & x typename genType::col_type const & x
) )
{ {
assert(index >= 0 && index < m.length()); assert(index >= 0 && static_cast<detail::component_count_t>(index) < detail::component_count(m));
genType Result = m; genType Result = m;
Result[index] = x; Result[index] = x;
@ -81,7 +81,7 @@ namespace glm
length_t const & index length_t const & index
) )
{ {
assert(index >= 0 && index < m.length()); assert(index >= 0 && static_cast<detail::component_count_t>(index) < detail::component_count(m));
return m[index]; return m[index];
} }

View File

@ -58,7 +58,7 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tquat struct tquat
{ {
enum ctor{null}; enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef tvec4<bool, P> bool_type; typedef tvec4<bool, P> bool_type;
@ -74,19 +74,20 @@ namespace glm
GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const; GLM_FUNC_DECL GLM_CONSTEXPR length_t length() const;
#endif//GLM_FORCE_SIZE_FUNC #endif//GLM_FORCE_SIZE_FUNC
// Constructors //////////////////////////////////////
// Implicit basic constructors
GLM_FUNC_DECL tquat(); GLM_FUNC_DECL tquat();
template <typename U, precision Q> GLM_FUNC_DECL tquat(tquat<T, P> const & q);
GLM_FUNC_DECL explicit tquat( template <precision Q>
tquat<U, Q> const & q); GLM_FUNC_DECL tquat(tquat<T, Q> const & q);
GLM_FUNC_DECL tquat(
T const & s, //////////////////////////////////////
tvec3<T, P> const & v); // Explicit basic constructors
GLM_FUNC_DECL tquat(
T const & w, GLM_FUNC_DECL explicit tquat(ctor);
T const & x, GLM_FUNC_DECL explicit tquat(T const & s, tvec3<T, P> const & v);
T const & y, GLM_FUNC_DECL tquat(T const & w, T const & x, T const & y, T const & z);
T const & z);
// Convertions // Convertions

View File

@ -68,10 +68,9 @@ namespace detail
{} {}
template <typename T, precision P> template <typename T, precision P>
template <typename U, precision Q>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat GLM_FUNC_QUALIFIER tquat<T, P>::tquat
( (
tquat<U, Q> const & q tquat<T, P> const & q
) : ) :
x(q.x), x(q.x),
y(q.y), y(q.y),
@ -79,6 +78,22 @@ namespace detail
w(q.w) w(q.w)
{} {}
template <typename T, precision P>
template <precision Q>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat
(
tquat<T, Q> const & q
) :
x(q.x),
y(q.y),
z(q.z),
w(q.w)
{}
template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat(ctor)
{}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat GLM_FUNC_QUALIFIER tquat<T, P>::tquat
( (
@ -731,7 +746,7 @@ namespace detail
T biggestVal = sqrt(fourBiggestSquaredMinus1 + T(1)) * T(0.5); T biggestVal = sqrt(fourBiggestSquaredMinus1 + T(1)) * T(0.5);
T mult = static_cast<T>(0.25) / biggestVal; T mult = static_cast<T>(0.25) / biggestVal;
tquat<T, P> Result; tquat<T, P> Result(tquat<T, P>::_null);
switch(biggestIndex) switch(biggestIndex)
{ {
case 0: case 0:
@ -804,16 +819,16 @@ namespace detail
tvec3<T, P> const & v tvec3<T, P> const & v
) )
{ {
tquat<T, P> result; tquat<T, P> Result(tquat<T, P>::_null);
T const a(angle); T const a(angle);
T const s = glm::sin(a * static_cast<T>(0.5)); T const s = glm::sin(a * static_cast<T>(0.5));
result.w = glm::cos(a * static_cast<T>(0.5)); Result.w = glm::cos(a * static_cast<T>(0.5));
result.x = v.x * s; Result.x = v.x * s;
result.y = v.y * s; Result.y = v.y * s;
result.z = v.z * s; Result.z = v.z * s;
return result; return Result;
} }
template <typename T, precision P> template <typename T, precision P>
@ -823,8 +838,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] < y[i]; Result[i] = x[i] < y[i];
return Result; return Result;
} }
@ -836,8 +851,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] <= y[i]; Result[i] = x[i] <= y[i];
return Result; return Result;
} }
@ -849,8 +864,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] > y[i]; Result[i] = x[i] > y[i];
return Result; return Result;
} }
@ -862,8 +877,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] >= y[i]; Result[i] = x[i] >= y[i];
return Result; return Result;
} }
@ -875,8 +890,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] == y[i]; Result[i] = x[i] == y[i];
return Result; return Result;
} }
@ -888,8 +903,8 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result; tvec4<bool, P> Result(tvec4<bool, P>::_null);
for(length_t i = 0; i < x.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(x); ++i)
Result[i] = x[i] != y[i]; Result[i] = x[i] != y[i];
return Result; return Result;
} }

View File

@ -227,8 +227,8 @@ namespace glm
template<typename T, precision P, template<typename, precision> class vecType> template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x) GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x)
{ {
vecType<T, P> Result; vecType<T, P> Result(vecType<T, P>::_null);
for(length_t i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = next_float(x[i]); Result[i] = next_float(x[i]);
return Result; return Result;
} }
@ -262,8 +262,8 @@ namespace glm
template<typename T, precision P, template<typename, precision> class vecType> template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x) GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x)
{ {
vecType<T, P> Result; vecType<T, P> Result(vecType<T, P>::_null);
for(length_t i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = prev_float(x[i]); Result[i] = prev_float(x[i]);
return Result; return Result;
} }
@ -280,8 +280,8 @@ namespace glm
template<typename T, precision P, template<typename, precision> class vecType> template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x, vecType<uint, P> const & ulps) GLM_FUNC_QUALIFIER vecType<T, P> next_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
{ {
vecType<T, P> Result; vecType<T, P> Result(vecType<T, P>::_null);
for(length_t i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = next_float(x[i], ulps[i]); Result[i] = next_float(x[i], ulps[i]);
return Result; return Result;
} }
@ -298,8 +298,8 @@ namespace glm
template<typename T, precision P, template<typename, precision> class vecType> template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x, vecType<uint, P> const & ulps) GLM_FUNC_QUALIFIER vecType<T, P> prev_float(vecType<T, P> const & x, vecType<uint, P> const & ulps)
{ {
vecType<T, P> Result; vecType<T, P> Result(vecType<T, P>::_null);
for(length_t i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = prev_float(x[i], ulps[i]); Result[i] = prev_float(x[i], ulps[i]);
return Result; return Result;
} }
@ -338,8 +338,8 @@ namespace glm
template<typename T, precision P, template<typename, precision> class vecType> template<typename T, precision P, template<typename, precision> class vecType>
GLM_FUNC_QUALIFIER vecType<uint, P> float_distance(vecType<T, P> const & x, vecType<T, P> const & y) GLM_FUNC_QUALIFIER vecType<uint, P> float_distance(vecType<T, P> const & x, vecType<T, P> const & y)
{ {
vecType<uint, P> Result; vecType<uint, P> Result(vecType<T, P>::_null);
for(length_t i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = float_distance(x[i], y[i]); Result[i] = float_distance(x[i], y[i]);
return Result; return Result;
} }

View File

@ -23,10 +23,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
const tvec2<T, P>& y, const tvec2<U, P>& b const tvec2<T, P>& y, const tvec2<U, P>& b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
//Result.x = x[0] < y[0] ? a[0] : b[0]; for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
//Result.y = x[1] < y[1] ? a[1] : b[1];
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i)
Result[i] = x[i] < y[i] ? a[i] : b[i]; Result[i] = x[i] < y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -38,8 +36,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
const tvec3<T, P>& y, const tvec3<U, P>& b const tvec3<T, P>& y, const tvec3<U, P>& b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? a[i] : b[i]; Result[i] = x[i] < y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -51,8 +49,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
const tvec4<T, P>& y, const tvec4<U, P>& b const tvec4<T, P>& y, const tvec4<U, P>& b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? a[i] : b[i]; Result[i] = x[i] < y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -64,8 +62,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
T y, const tvec2<U, P>& b T y, const tvec2<U, P>& b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x < y ? a[i] : b[i]; Result[i] = x < y ? a[i] : b[i];
return Result; return Result;
} }
@ -77,8 +75,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
T y, const tvec3<U, P>& b T y, const tvec3<U, P>& b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x < y ? a[i] : b[i]; Result[i] = x < y ? a[i] : b[i];
return Result; return Result;
} }
@ -90,8 +88,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
T y, const tvec4<U, P>& b T y, const tvec4<U, P>& b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x < y ? a[i] : b[i]; Result[i] = x < y ? a[i] : b[i];
return Result; return Result;
} }
@ -103,8 +101,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
tvec2<T, P> const & y, U b tvec2<T, P> const & y, U b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? a : b; Result[i] = x[i] < y[i] ? a : b;
return Result; return Result;
} }
@ -112,12 +110,12 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
template<typename T, typename U, precision P> template<typename T, typename U, precision P>
GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
( (
const tvec3<T, P>& x, U a, tvec3<T, P> const & x, U a,
const tvec3<T, P>& y, U b tvec3<T, P> const & y, U b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? a : b; Result[i] = x[i] < y[i] ? a : b;
return Result; return Result;
} }
@ -129,8 +127,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
const tvec4<T, P>& y, U b const tvec4<T, P>& y, U b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? a : b; Result[i] = x[i] < y[i] ? a : b;
return Result; return Result;
} }
@ -156,8 +154,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
const tvec2<T, P>& z, const tvec2<U, P>& c const tvec2<T, P>& z, const tvec2<U, P>& c
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -170,8 +168,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
const tvec3<T, P>& z, const tvec3<U, P>& c const tvec3<T, P>& z, const tvec3<U, P>& c
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -184,8 +182,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
const tvec4<T, P>& z, const tvec4<U, P>& c const tvec4<T, P>& z, const tvec4<U, P>& c
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]); Result[i] = x[i] < y[i] ? (x[i] < z[i] ? a[i] : c[i]) : (y[i] < z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -218,8 +216,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
const tvec2<T, P>& w, const tvec2<U, P>& d const tvec2<T, P>& w, const tvec2<U, P>& d
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]); T Test2 = min(z[i], w[i]);
@ -240,8 +238,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
const tvec3<T, P>& w, const tvec3<U, P>& d const tvec3<T, P>& w, const tvec3<U, P>& d
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]); T Test2 = min(z[i], w[i]);
@ -262,8 +260,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
const tvec4<T, P>& w, const tvec4<U, P>& d const tvec4<T, P>& w, const tvec4<U, P>& d
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]); T Test2 = min(z[i], w[i]);
@ -287,8 +285,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
T Test1 = min(x, y); T Test1 = min(x, y);
T Test2 = min(z, w); T Test2 = min(z, w);
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x < y ? a[i] : b[i]; U Result1 = x < y ? a[i] : b[i];
U Result2 = z < w ? c[i] : d[i]; U Result2 = z < w ? c[i] : d[i];
@ -310,8 +308,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
T Test1 = min(x, y); T Test1 = min(x, y);
T Test2 = min(z, w); T Test2 = min(z, w);
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < tvec3<U, P>::value_size; ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x < y ? a[i] : b[i]; U Result1 = x < y ? a[i] : b[i];
U Result2 = z < w ? c[i] : d[i]; U Result2 = z < w ? c[i] : d[i];
@ -333,8 +331,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
T Test1 = min(x, y); T Test1 = min(x, y);
T Test2 = min(z, w); T Test2 = min(z, w);
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < tvec4<U, P>::value_size; ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x < y ? a[i] : b[i]; U Result1 = x < y ? a[i] : b[i];
U Result2 = z < w ? c[i] : d[i]; U Result2 = z < w ? c[i] : d[i];
@ -353,8 +351,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
const tvec2<T, P>& w, U d const tvec2<T, P>& w, U d
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<T, P>::size_type i = 0; i < tvec2<T, P>::value_size(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]);; T Test2 = min(z[i], w[i]);;
@ -375,8 +373,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMin
const tvec3<T, P>& w, U d const tvec3<T, P>& w, U d
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<T, P>::size_type i = 0; i < tvec3<T, P>::value_size(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]);; T Test2 = min(z[i], w[i]);;
@ -397,8 +395,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMin
const tvec4<T, P>& w, U d const tvec4<T, P>& w, U d
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<T, P>::size_type i = 0; i < tvec4<T, P>::value_size(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = min(x[i], y[i]); T Test1 = min(x[i], y[i]);
T Test2 = min(z[i], w[i]);; T Test2 = min(z[i], w[i]);;
@ -424,8 +422,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& y, const tvec2<U, P>& b const tvec2<T, P>& y, const tvec2<U, P>& b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a[i] : b[i]; Result[i] = x[i] > y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -438,8 +436,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& y, const tvec3<U, P>& b const tvec3<T, P>& y, const tvec3<U, P>& b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a[i] : b[i]; Result[i] = x[i] > y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -452,8 +450,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& y, const tvec4<U, P>& b const tvec4<T, P>& y, const tvec4<U, P>& b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a[i] : b[i]; Result[i] = x[i] > y[i] ? a[i] : b[i];
return Result; return Result;
} }
@ -466,8 +464,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
T y, const tvec2<U, P>& b T y, const tvec2<U, P>& b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? a[i] : b[i]; Result[i] = x > y ? a[i] : b[i];
return Result; return Result;
} }
@ -480,8 +478,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
T y, const tvec3<U, P>& b T y, const tvec3<U, P>& b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? a[i] : b[i]; Result[i] = x > y ? a[i] : b[i];
return Result; return Result;
} }
@ -494,8 +492,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
T y, const tvec4<U, P>& b T y, const tvec4<U, P>& b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? a[i] : b[i]; Result[i] = x > y ? a[i] : b[i];
return Result; return Result;
} }
@ -508,8 +506,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& y, U b const tvec2<T, P>& y, U b
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a : b; Result[i] = x[i] > y[i] ? a : b;
return Result; return Result;
} }
@ -522,8 +520,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& y, U b const tvec3<T, P>& y, U b
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a : b; Result[i] = x[i] > y[i] ? a : b;
return Result; return Result;
} }
@ -536,8 +534,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& y, U b const tvec4<T, P>& y, U b
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? a : b; Result[i] = x[i] > y[i] ? a : b;
return Result; return Result;
} }
@ -564,8 +562,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& z, const tvec2<U, P>& c const tvec2<T, P>& z, const tvec2<U, P>& c
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -579,8 +577,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& z, const tvec3<U, P>& c const tvec3<T, P>& z, const tvec3<U, P>& c
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -594,8 +592,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& z, const tvec4<U, P>& c const tvec4<T, P>& z, const tvec4<U, P>& c
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a[i] : c[i]) : (y[i] > z[i] ? b[i] : c[i]);
return Result; return Result;
} }
@ -609,8 +607,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
T z, const tvec2<U, P>& c T z, const tvec2<U, P>& c
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
return Result; return Result;
} }
@ -624,8 +622,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
T z, const tvec3<U, P>& c T z, const tvec3<U, P>& c
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
return Result; return Result;
} }
@ -639,8 +637,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
T z, const tvec4<U, P>& c T z, const tvec4<U, P>& c
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]); Result[i] = x > y ? (x > z ? a[i] : c[i]) : (y > z ? b[i] : c[i]);
return Result; return Result;
} }
@ -654,8 +652,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& z, U c const tvec2<T, P>& z, U c
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
return Result; return Result;
} }
@ -669,8 +667,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& z, U c const tvec3<T, P>& z, U c
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
return Result; return Result;
} }
@ -684,8 +682,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& z, U c const tvec4<T, P>& z, U c
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c); Result[i] = x[i] > y[i] ? (x[i] > z[i] ? a : c) : (y[i] > z[i] ? b : c);
return Result; return Result;
} }
@ -718,8 +716,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& w, const tvec2<U, P>& d const tvec2<T, P>& w, const tvec2<U, P>& d
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]); T Test2 = max(z[i], w[i]);
@ -740,8 +738,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& w, const tvec3<U, P>& d const tvec3<T, P>& w, const tvec3<U, P>& d
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]); T Test2 = max(z[i], w[i]);
@ -762,8 +760,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& w, const tvec4<U, P>& d const tvec4<T, P>& w, const tvec4<U, P>& d
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]); T Test2 = max(z[i], w[i]);
@ -787,8 +785,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
T Test1 = max(x, y); T Test1 = max(x, y);
T Test2 = max(z, w); T Test2 = max(z, w);
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x > y ? a[i] : b[i]; U Result1 = x > y ? a[i] : b[i];
U Result2 = z > w ? c[i] : d[i]; U Result2 = z > w ? c[i] : d[i];
@ -810,8 +808,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
T Test1 = max(x, y); T Test1 = max(x, y);
T Test2 = max(z, w); T Test2 = max(z, w);
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x > y ? a[i] : b[i]; U Result1 = x > y ? a[i] : b[i];
U Result2 = z > w ? c[i] : d[i]; U Result2 = z > w ? c[i] : d[i];
@ -833,8 +831,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
T Test1 = max(x, y); T Test1 = max(x, y);
T Test2 = max(z, w); T Test2 = max(z, w);
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<U, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
U Result1 = x > y ? a[i] : b[i]; U Result1 = x > y ? a[i] : b[i];
U Result2 = z > w ? c[i] : d[i]; U Result2 = z > w ? c[i] : d[i];
@ -853,8 +851,8 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
const tvec2<T, P>& w, U d const tvec2<T, P>& w, U d
) )
{ {
tvec2<U, P> Result; tvec2<U, P> Result(tvec2<U, P>::_null);
for(typename tvec2<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]);; T Test2 = max(z[i], w[i]);;
@ -875,8 +873,8 @@ GLM_FUNC_QUALIFIER tvec3<U, P> associatedMax
const tvec3<T, P>& w, U d const tvec3<T, P>& w, U d
) )
{ {
tvec3<U, P> Result; tvec3<U, P> Result(tvec3<U, P>::_null);
for(typename tvec3<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]);; T Test2 = max(z[i], w[i]);;
@ -897,8 +895,8 @@ GLM_FUNC_QUALIFIER tvec4<U, P> associatedMax
const tvec4<T, P>& w, U d const tvec4<T, P>& w, U d
) )
{ {
tvec4<U, P> Result; tvec4<U, P> Result(tvec4<U, P>::_null);
for(typename tvec4<T, P>::size_type i = 0; i < Result.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(Result); ++i)
{ {
T Test1 = max(x[i], y[i]); T Test1 = max(x[i], y[i]);
T Test2 = max(z[i], w[i]);; T Test2 = max(z[i], w[i]);;

View File

@ -42,7 +42,7 @@
#include "../vec2.hpp" #include "../vec2.hpp"
#include "../vec3.hpp" #include "../vec3.hpp"
#include "../vec4.hpp" #include "../vec4.hpp"
#include "../gtx/vec1.hpp" #include "../gtc/vec1.hpp"
#if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED)) #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
# pragma message("GLM: GLM_GTX_common extension included") # pragma message("GLM: GLM_GTX_common extension included")

View File

@ -13,7 +13,7 @@ namespace glm
GLM_FUNC_QUALIFIER T compAdd(vecType<T, P> const & v) GLM_FUNC_QUALIFIER T compAdd(vecType<T, P> const & v)
{ {
T result(0); T result(0);
for(length_t i = 0; i < v.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(v); ++i)
result += v[i]; result += v[i];
return result; return result;
} }
@ -22,7 +22,7 @@ namespace glm
GLM_FUNC_QUALIFIER T compMul(vecType<T, P> const & v) GLM_FUNC_QUALIFIER T compMul(vecType<T, P> const & v)
{ {
T result(1); T result(1);
for(length_t i = 0; i < v.length(); ++i) for(detail::component_count_t i = 0; i < detail::component_count(v); ++i)
result *= v[i]; result *= v[i];
return result; return result;
} }
@ -31,7 +31,7 @@ namespace glm
GLM_FUNC_QUALIFIER T compMin(vecType<T, P> const & v) GLM_FUNC_QUALIFIER T compMin(vecType<T, P> const & v)
{ {
T result(v[0]); T result(v[0]);
for(length_t i = 1; i < v.length(); ++i) for(detail::component_count_t i = 1; i < detail::component_count(v); ++i)
result = min(result, v[i]); result = min(result, v[i]);
return result; return result;
} }
@ -40,7 +40,7 @@ namespace glm
GLM_FUNC_QUALIFIER T compMax(vecType<T, P> const & v) GLM_FUNC_QUALIFIER T compMax(vecType<T, P> const & v)
{ {
T result(v[0]); T result(v[0]);
for(length_t i = 1; i < v.length(); ++i) for(detail::component_count_t i = 1; i < detail::component_count(v); ++i)
result = max(result, v[i]); result = max(result, v[i]);
return result; return result;
} }

View File

@ -16,7 +16,7 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNull(tmat2x2<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNull(tmat2x2<T, P> const & m, T const & epsilon)
{ {
bool result = true; bool result = true;
for(length_t i = 0; result && i < 2 ; ++i) for(detail::component_count_t i = 0; result && i < 2 ; ++i)
result = isNull(m[i], epsilon); result = isNull(m[i], epsilon);
return result; return result;
} }
@ -25,7 +25,7 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNull(tmat3x3<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNull(tmat3x3<T, P> const & m, T const & epsilon)
{ {
bool result = true; bool result = true;
for(length_t i = 0; result && i < 3 ; ++i) for(detail::component_count_t i = 0; result && i < 3 ; ++i)
result = isNull(m[i], epsilon); result = isNull(m[i], epsilon);
return result; return result;
} }
@ -34,7 +34,7 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNull(tmat4x4<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNull(tmat4x4<T, P> const & m, T const & epsilon)
{ {
bool result = true; bool result = true;
for(length_t i = 0; result && i < 4 ; ++i) for(detail::component_count_t i = 0; result && i < 4 ; ++i)
result = isNull(m[i], epsilon); result = isNull(m[i], epsilon);
return result; return result;
} }
@ -43,13 +43,13 @@ namespace glm
GLM_FUNC_QUALIFIER bool isIdentity(matType<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isIdentity(matType<T, P> const & m, T const & epsilon)
{ {
bool result = true; bool result = true;
for(length_t i(0); result && i < m[0].length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m[0]); ++i)
{ {
for(length_t j(0); result && j < i ; ++j) for(detail::component_count_t j(0); result && j < i ; ++j)
result = abs(m[i][j]) <= epsilon; result = abs(m[i][j]) <= epsilon;
if(result) if(result)
result = abs(m[i][i] - 1) <= epsilon; result = abs(m[i][i] - 1) <= epsilon;
for(length_t j(i + 1); result && j < m.length(); ++j) for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j)
result = abs(m[i][j]) <= epsilon; result = abs(m[i][j]) <= epsilon;
} }
return result; return result;
@ -59,12 +59,12 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNormalized(tmat2x2<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNormalized(tmat2x2<T, P> const & m, T const & epsilon)
{ {
bool result(true); bool result(true);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
result = isNormalized(m[i], epsilon); result = isNormalized(m[i], epsilon);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
{ {
typename tmat2x2<T, P>::col_type v; typename tmat2x2<T, P>::col_type v;
for(length_t j(0); j < m.length(); ++j) for(detail::component_count_t j(0); j < detail::component_count(m); ++j)
v[j] = m[j][i]; v[j] = m[j][i];
result = isNormalized(v, epsilon); result = isNormalized(v, epsilon);
} }
@ -75,12 +75,12 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNormalized(tmat3x3<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNormalized(tmat3x3<T, P> const & m, T const & epsilon)
{ {
bool result(true); bool result(true);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
result = isNormalized(m[i], epsilon); result = isNormalized(m[i], epsilon);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
{ {
typename tmat3x3<T, P>::col_type v; typename tmat3x3<T, P>::col_type v;
for(length_t j(0); j < m.length(); ++j) for(detail::component_count_t j(0); j < detail::component_count(m); ++j)
v[j] = m[j][i]; v[j] = m[j][i];
result = isNormalized(v, epsilon); result = isNormalized(v, epsilon);
} }
@ -91,12 +91,12 @@ namespace glm
GLM_FUNC_QUALIFIER bool isNormalized(tmat4x4<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isNormalized(tmat4x4<T, P> const & m, T const & epsilon)
{ {
bool result(true); bool result(true);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
result = isNormalized(m[i], epsilon); result = isNormalized(m[i], epsilon);
for(length_t i(0); result && i < m.length(); ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m); ++i)
{ {
typename tmat4x4<T, P>::col_type v; typename tmat4x4<T, P>::col_type v;
for(length_t j(0); j < m.length(); ++j) for(detail::component_count_t j(0); j < detail::component_count(m); ++j)
v[j] = m[j][i]; v[j] = m[j][i];
result = isNormalized(v, epsilon); result = isNormalized(v, epsilon);
} }
@ -107,15 +107,15 @@ namespace glm
GLM_FUNC_QUALIFIER bool isOrthogonal(matType<T, P> const & m, T const & epsilon) GLM_FUNC_QUALIFIER bool isOrthogonal(matType<T, P> const & m, T const & epsilon)
{ {
bool result(true); bool result(true);
for(length_t i(0); result && i < m.length() - 1; ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m) - 1; ++i)
for(length_t j(i + 1); result && j < m.length(); ++j) for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j)
result = areOrthogonal(m[i], m[j], epsilon); result = areOrthogonal(m[i], m[j], epsilon);
if(result) if(result)
{ {
matType<T, P> tmp = transpose(m); matType<T, P> tmp = transpose(m);
for(length_t i(0); result && i < m.length() - 1 ; ++i) for(detail::component_count_t i(0); result && i < detail::component_count(m) - 1 ; ++i)
for(length_t j(i + 1); result && j < m.length(); ++j) for(detail::component_count_t j(i + 1); result && j < detail::component_count(m); ++j)
result = areOrthogonal(tmp[i], tmp[j], epsilon); result = areOrthogonal(tmp[i], tmp[j], epsilon);
} }
return result; return result;

View File

@ -45,32 +45,32 @@ namespace glm
/* The glm types provide a .length() member, but for matrices /* The glm types provide a .length() member, but for matrices
this only defines the number of columns, so we need to work around this */ this only defines the number of columns, so we need to work around this */
template <typename T, precision P> template <typename T, precision P>
length_t number_of_elements_(tvec2<T, P> const & v){ detail::component_count_t number_of_elements_(tvec2<T, P> const & v){
return v.length(); return detail::component_count(v);
} }
template <typename T, precision P> template <typename T, precision P>
length_t number_of_elements_(tvec3<T, P> const & v){ detail::component_count_t number_of_elements_(tvec3<T, P> const & v){
return v.length(); return detail::component_count(v);
} }
template <typename T, precision P> template <typename T, precision P>
length_t number_of_elements_(tvec4<T, P> const & v){ detail::component_count_t number_of_elements_(tvec4<T, P> const & v){
return v.length(); return detail::component_count(v);
} }
template <typename genType> template <typename genType>
length_t number_of_elements_(genType const & v){ detail::component_count_t number_of_elements_(genType const & m){
return v.length() * v[0].length(); return detail::component_count(m) * detail::component_count(m[0]);
} }
template <typename genType> template <typename genType>
const typename genType::value_type * begin(const genType& v){ const typename genType::value_type * begin(genType const & v){
return value_ptr(v); return value_ptr(v);
} }
template <typename genType> template <typename genType>
const typename genType::value_type * end(const genType& v){ const typename genType::value_type * end(genType const & v){
return begin(v) + number_of_elements_(v); return begin(v) + number_of_elements_(v);
} }

View File

@ -12,7 +12,7 @@
//#include <boost/thread/thread.hpp> //#include <boost/thread/thread.hpp>
#include <glm/gtc/constants.hpp> #include <glm/gtc/constants.hpp>
#include <glm/gtc/epsilon.hpp> #include <glm/gtc/epsilon.hpp>
#include <glm/gtx/vec1.hpp> #include <glm/gtc/vec1.hpp>
#include <cstdio> #include <cstdio>
#include <cmath> #include <cmath>

View File

@ -10,7 +10,7 @@
#include <glm/common.hpp> #include <glm/common.hpp>
#include <glm/exponential.hpp> #include <glm/exponential.hpp>
#include <glm/gtc/ulp.hpp> #include <glm/gtc/ulp.hpp>
#include <glm/gtx/vec1.hpp> #include <glm/gtc/vec1.hpp>
int test_pow() int test_pow()
{ {

View File

@ -60,7 +60,7 @@ int test_ctr()
{ {
int Error(0); int Error(0);
#if(GLM_HAS_INITIALIZER_LISTS) #if GLM_HAS_INITIALIZER_LISTS
glm::mat2x2 m0( glm::mat2x2 m0(
glm::vec2(0, 1), glm::vec2(0, 1),
glm::vec2(2, 3)); glm::vec2(2, 3));

View File

@ -34,7 +34,7 @@ int test_ctr()
{ {
int Error(0); int Error(0);
#if(GLM_HAS_INITIALIZER_LISTS) #if GLM_HAS_INITIALIZER_LISTS
glm::mat2x3 m0( glm::mat2x3 m0(
glm::vec3(0, 1, 2), glm::vec3(0, 1, 2),
glm::vec3(3, 4, 5)); glm::vec3(3, 4, 5));

View File

@ -1,14 +1,14 @@
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2008-08-31 // Created : 2014-10-11
// Updated : 2008-08-31 // Updated : 2014-10-11
// Licence : This source is under MIT License // Licence : This source is under MIT License
// File : test/core/type_vec1.cpp // File : test/core/type_vec1.cpp
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
#define GLM_SWIZZLE #define GLM_SWIZZLE
#include <glm/gtx/vec1.hpp> #include <glm/gtc/vec1.hpp>
int test_operators() int test_operators()
{ {

View File

@ -12,3 +12,4 @@ glmCreateTestGTC(gtc_reciprocal)
glmCreateTestGTC(gtc_type_precision) glmCreateTestGTC(gtc_type_precision)
glmCreateTestGTC(gtc_type_ptr) glmCreateTestGTC(gtc_type_ptr)
glmCreateTestGTC(gtc_ulp) glmCreateTestGTC(gtc_ulp)
glmCreateTestGTC(gtc_vec1)

View File

@ -273,7 +273,7 @@ int test_quat_ctr()
{ {
int Error(0); int Error(0);
# if(GLM_HAS_INITIALIZER_LISTS) # if GLM_HAS_INITIALIZER_LISTS
{ {
glm::quat A{0, 1, 2, 3}; glm::quat A{0, 1, 2, 3};

17
test/gtc/gtc_vec1.cpp Normal file
View File

@ -0,0 +1,17 @@
///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2014-10-11
// Updated : 2014-10-11
// Licence : This source is under MIT License
// File : test/gtc/vec1.cpp
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <glm/gtc/vec1.hpp>
int main()
{
int Error = 0;
return Error;
}

View File

@ -8,7 +8,6 @@
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
#include <glm/gtx/common.hpp> #include <glm/gtx/common.hpp>
#include <glm/gtx/vec1.hpp>
int test_isdenormal() int test_isdenormal()
{ {