- Added GLM_FORCE_NO_CTOR_INIT

This commit is contained in:
Christophe Riccio 2014-10-19 03:33:14 +02:00
parent 0813facc58
commit bcd07b50f3
48 changed files with 196 additions and 236 deletions

Binary file not shown.

View File

@ -81,7 +81,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>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++i) for(detail::component_count_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

@ -45,7 +45,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec2>::type call(tvec2<T, P> const & c, tvec2<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec2>::type call(tvec2<T, P> const & c, tvec2<T, P> const & r)
{ {
tmat2x2<T, P> m(tmat2x2<T, P>::_null); tmat2x2<T, P> m(uninitialize);
m[0][0] = c[0] * r[0]; m[0][0] = c[0] * r[0];
m[0][1] = c[1] * r[0]; m[0][1] = c[1] * r[0];
m[1][0] = c[0] * r[1]; m[1][0] = c[0] * r[1];
@ -59,7 +59,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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(m); ++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;
@ -71,7 +71,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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(m); ++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;
@ -83,7 +83,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec2>::type call(tvec3<T, P> const & c, tvec2<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec2>::type call(tvec3<T, P> const & c, tvec2<T, P> const & r)
{ {
tmat2x3<T, P> m(tmat2x3<T, P>::_null); tmat2x3<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[0][2] = c.z * r.x; m[0][2] = c.z * r.x;
@ -99,7 +99,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec3>::type call(tvec2<T, P> const & c, tvec3<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec3>::type call(tvec2<T, P> const & c, tvec3<T, P> const & r)
{ {
tmat3x2<T, P> m(tmat3x2<T, P>::_null); tmat3x2<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[1][0] = c.x * r.y; m[1][0] = c.x * r.y;
@ -115,7 +115,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec2>::type call(tvec4<T, P> const & c, tvec2<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec2>::type call(tvec4<T, P> const & c, tvec2<T, P> const & r)
{ {
tmat2x4<T, P> m(tmat2x4<T, P>::_null); tmat2x4<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[0][2] = c.z * r.x; m[0][2] = c.z * r.x;
@ -133,7 +133,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec4>::type call(tvec2<T, P> const & c, tvec4<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec2, tvec4>::type call(tvec2<T, P> const & c, tvec4<T, P> const & r)
{ {
tmat4x2<T, P> m(tmat4x2<T, P>::_null); tmat4x2<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[1][0] = c.x * r.y; m[1][0] = c.x * r.y;
@ -151,7 +151,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec3>::type call(tvec4<T, P> const & c, tvec3<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec4, tvec3>::type call(tvec4<T, P> const & c, tvec3<T, P> const & r)
{ {
tmat3x4<T, P> m(tmat3x4<T, P>::_null); tmat3x4<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[0][2] = c.z * r.x; m[0][2] = c.z * r.x;
@ -173,7 +173,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec4>::type call(tvec3<T, P> const & c, tvec4<T, P> const & r) GLM_FUNC_QUALIFIER static typename detail::outerProduct_trait<T, P, tvec3, tvec4>::type call(tvec3<T, P> const & c, tvec4<T, P> const & r)
{ {
tmat4x3<T, P> m(tmat4x3<T, P>::_null); tmat4x3<T, P> m(uninitialize);
m[0][0] = c.x * r.x; m[0][0] = c.x * r.x;
m[0][1] = c.y * r.x; m[0][1] = c.y * r.x;
m[0][2] = c.z * r.x; m[0][2] = c.z * r.x;
@ -198,7 +198,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat2x2<T, P> call(tmat2x2<T, P> const & m) GLM_FUNC_QUALIFIER static tmat2x2<T, P> call(tmat2x2<T, P> const & m)
{ {
tmat2x2<T, P> result(tmat2x2<T, P>::_null); tmat2x2<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[1][0] = m[0][1]; result[1][0] = m[0][1];
@ -212,7 +212,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat3x2<T, P> call(tmat2x3<T, P> const & m) GLM_FUNC_QUALIFIER static tmat3x2<T, P> call(tmat2x3<T, P> const & m)
{ {
tmat3x2<T, P> result(tmat3x2<T, P>::_null); tmat3x2<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[1][0] = m[0][1]; result[1][0] = m[0][1];
@ -228,7 +228,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat4x2<T, P> call(tmat2x4<T, P> const & m) GLM_FUNC_QUALIFIER static tmat4x2<T, P> call(tmat2x4<T, P> const & m)
{ {
tmat4x2<T, P> result(tmat4x2<T, P>::_null); tmat4x2<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[1][0] = m[0][1]; result[1][0] = m[0][1];
@ -246,7 +246,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat2x3<T, P> call(tmat3x2<T, P> const & m) GLM_FUNC_QUALIFIER static tmat2x3<T, P> call(tmat3x2<T, P> const & m)
{ {
tmat2x3<T, P> result(tmat2x3<T, P>::_null); tmat2x3<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -262,7 +262,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat3x3<T, P> call(tmat3x3<T, P> const & m) GLM_FUNC_QUALIFIER static tmat3x3<T, P> call(tmat3x3<T, P> const & m)
{ {
tmat3x3<T, P> result(tmat3x3<T, P>::_null); tmat3x3<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -283,7 +283,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat4x3<T, P> call(tmat3x4<T, P> const & m) GLM_FUNC_QUALIFIER static tmat4x3<T, P> call(tmat3x4<T, P> const & m)
{ {
tmat4x3<T, P> result(tmat4x3<T, P>::_null); tmat4x3<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -305,7 +305,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat2x4<T, P> call(tmat4x2<T, P> const & m) GLM_FUNC_QUALIFIER static tmat2x4<T, P> call(tmat4x2<T, P> const & m)
{ {
tmat2x4<T, P> result(tmat2x4<T, P>::_null); tmat2x4<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -323,7 +323,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat3x4<T, P> call(tmat4x3<T, P> const & m) GLM_FUNC_QUALIFIER static tmat3x4<T, P> call(tmat4x3<T, P> const & m)
{ {
tmat3x4<T, P> result(tmat3x4<T, P>::_null); tmat3x4<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -345,7 +345,7 @@ namespace detail
{ {
GLM_FUNC_QUALIFIER static tmat4x4<T, P> call(tmat4x4<T, P> const & m) GLM_FUNC_QUALIFIER static tmat4x4<T, P> call(tmat4x4<T, P> const & m)
{ {
tmat4x4<T, P> result(tmat4x4<T, P>::_null); tmat4x4<T, P> result(uninitialize);
result[0][0] = m[0][0]; result[0][0] = m[0][0];
result[0][1] = m[1][0]; result[0][1] = m[1][0];
result[0][2] = m[2][0]; result[0][2] = m[2][0];
@ -423,7 +423,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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(result); ++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

@ -41,7 +41,7 @@ namespace glm
"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(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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];
@ -59,7 +59,7 @@ namespace glm
"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(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -76,7 +76,7 @@ namespace glm
"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(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -93,7 +93,7 @@ namespace glm
"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(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -108,7 +108,7 @@ namespace glm
{ {
assert(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -123,7 +123,7 @@ namespace glm
{ {
assert(detail::component_count(x) == detail::component_count(y)); 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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -150,7 +150,7 @@ namespace glm
template <precision P, template <typename, precision> class vecType> template <precision P, template <typename, precision> class vecType>
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(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(v); ++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

@ -1049,7 +1049,7 @@ GLM_FUNC_QUALIFIER void sse_rotate_ps(__m128 const in[4], float Angle, float con
Result[2] = TmpC4; Result[2] = TmpC4;
Result[3] = _mm_set_ps(1, 0, 0, 0); Result[3] = _mm_set_ps(1, 0, 0, 0);
//tmat4x4<valType> Result(tmat4x4<valType>::_null); //tmat4x4<valType> Result(uninitialize);
//Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; //Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];
//Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; //Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];
//Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; //Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];

View File

@ -39,7 +39,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat2x2 struct tmat2x2
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec2<T, P> col_type; typedef tvec2<T, P> col_type;

View File

@ -83,8 +83,10 @@ namespace detail
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2() GLM_FUNC_QUALIFIER tmat2x2<T, P>::tmat2x2()
{ {
this->value[0] = col_type(1, 0); # ifndef GLM_FORCE_NO_CTOR_INIT
this->value[1] = col_type(0, 1); this->value[0] = col_type(1, 0);
this->value[1] = col_type(0, 1);
# endif
} }
template <typename T, precision P> template <typename T, precision P>

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat2x3 struct tmat2x3
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec3<T, P> col_type; typedef tvec3<T, P> col_type;

View File

@ -73,8 +73,10 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3() GLM_FUNC_QUALIFIER tmat2x3<T, P>::tmat2x3()
{ {
this->value[0] = col_type(T(1), T(0), T(0)); # ifndef GLM_FORCE_NO_CTOR_INIT
this->value[1] = col_type(T(0), T(1), T(0)); this->value[0] = col_type(1, 0, 0);
this->value[1] = col_type(0, 1, 0);
# endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -498,7 +500,7 @@ namespace glm
T SrcB20 = m2[2][0]; T SrcB20 = m2[2][0];
T SrcB21 = m2[2][1]; T SrcB21 = m2[2][1];
tmat3x3<T, P> Result(tmat3x3<T, P>::_null); tmat3x3<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat2x4 struct tmat2x4
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec4<T, P> col_type; typedef tvec4<T, P> col_type;

View File

@ -73,10 +73,10 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4() GLM_FUNC_QUALIFIER tmat2x4<T, P>::tmat2x4()
{ {
value_type const Zero(0); # ifndef GLM_FORCE_NO_CTOR_INIT
value_type const One(1); this->value[0] = col_type(1, 0, 0, 0);
this->value[0] = col_type(One, Zero, Zero, Zero); this->value[1] = col_type(0, 1, 0, 0);
this->value[1] = col_type(Zero, One, Zero, Zero); # endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -492,7 +492,7 @@ namespace glm
T SrcB30 = m2[3][0]; T SrcB30 = m2[3][0];
T SrcB31 = m2[3][1]; T SrcB31 = m2[3][1];
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat3x2 struct tmat3x2
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec2<T, P> col_type; typedef tvec2<T, P> col_type;

View File

@ -73,9 +73,11 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2() GLM_FUNC_QUALIFIER tmat3x2<T, P>::tmat3x2()
{ {
this->value[0] = col_type(1, 0); # ifndef GLM_FORCE_NO_CTOR_INIT
this->value[1] = col_type(0, 1); this->value[0] = col_type(1, 0);
this->value[2] = col_type(0, 0); this->value[1] = col_type(0, 1);
this->value[2] = col_type(0, 0);
# endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -520,7 +522,7 @@ namespace glm
const T SrcB11 = m2[1][1]; const T SrcB11 = m2[1][1];
const T SrcB12 = m2[1][2]; const T SrcB12 = m2[1][2];
tmat2x2<T, P> Result(tmat2x2<T, P>::_null); tmat2x2<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12; Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;

View File

@ -39,7 +39,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat3x3 struct tmat3x3
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec3<T, P> col_type; typedef tvec3<T, P> col_type;

View File

@ -37,7 +37,7 @@ namespace detail
- m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2]) - m[1][0] * (m[0][1] * m[2][2] - m[2][1] * m[0][2])
+ m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2])); + m[2][0] * (m[0][1] * m[1][2] - m[1][1] * m[0][2]));
tmat3x3<T, P> Inverse(tmat3x3<T, P>::_null); tmat3x3<T, P> Inverse(uninitialize);
Inverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * OneOverDeterminant; Inverse[0][0] = + (m[1][1] * m[2][2] - m[2][1] * m[1][2]) * OneOverDeterminant;
Inverse[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]) * OneOverDeterminant; Inverse[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]) * OneOverDeterminant;
Inverse[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * OneOverDeterminant; Inverse[2][0] = + (m[1][0] * m[2][1] - m[2][0] * m[1][1]) * OneOverDeterminant;
@ -97,11 +97,11 @@ namespace detail
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3() GLM_FUNC_QUALIFIER tmat3x3<T, P>::tmat3x3()
{ {
value_type const Zero(0); # ifndef GLM_FORCE_NO_CTOR_INIT
value_type const One(1); this->value[0] = col_type(1, 0, 0);
this->value[0] = col_type(One, Zero, Zero); this->value[1] = col_type(0, 1, 0);
this->value[1] = col_type(Zero, One, Zero); this->value[2] = col_type(0, 0, 1);
this->value[2] = col_type(Zero, Zero, One); # endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -596,7 +596,7 @@ namespace detail
T const SrcB21 = m2[2][1]; T const SrcB21 = m2[2][1];
T const SrcB22 = m2[2][2]; T const SrcB22 = m2[2][2];
tmat3x3<T, P> Result(tmat3x3<T, P>::_null); tmat3x3<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02;

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat3x4 struct tmat3x4
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef size_t size_type; typedef size_t size_type;
typedef tvec4<T, P> col_type; typedef tvec4<T, P> col_type;

View File

@ -73,9 +73,11 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4() GLM_FUNC_QUALIFIER tmat3x4<T, P>::tmat3x4()
{ {
this->value[0] = col_type(1, 0, 0, 0); # ifndef GLM_FORCE_NO_CTOR_INIT
this->value[1] = col_type(0, 1, 0, 0); this->value[0] = col_type(1, 0, 0, 0);
this->value[2] = col_type(0, 0, 1, 0); this->value[1] = col_type(0, 1, 0, 0);
this->value[2] = col_type(0, 0, 1, 0);
# endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -535,7 +537,7 @@ namespace glm
const T SrcB31 = m2[3][1]; const T SrcB31 = m2[3][1];
const T SrcB32 = m2[3][2]; const T SrcB32 = m2[3][2];
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02;

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat4x2 struct tmat4x2
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec2<T, P> col_type; typedef tvec2<T, P> col_type;

View File

@ -73,12 +73,12 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2() GLM_FUNC_QUALIFIER tmat4x2<T, P>::tmat4x2()
{ {
value_type const Zero(0); # ifndef GLM_FORCE_NO_CTOR_INIT
value_type const One(1); this->value[0] = col_type(1, 0);
this->value[0] = col_type(One, Zero); this->value[1] = col_type(0, 1);
this->value[1] = col_type(Zero, One); this->value[2] = col_type(0, 0);
this->value[2] = col_type(Zero, Zero); this->value[3] = col_type(0, 0);
this->value[3] = col_type(Zero, Zero); # endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -569,7 +569,7 @@ namespace glm
T const SrcB12 = m2[1][2]; T const SrcB12 = m2[1][2];
T const SrcB13 = m2[1][3]; T const SrcB13 = m2[1][3];
tmat2x2<T, P> Result(tmat2x2<T, P>::_null); tmat2x2<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13; Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13;

View File

@ -40,7 +40,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat4x3 struct tmat4x3
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec3<T, P> col_type; typedef tvec3<T, P> col_type;

View File

@ -73,12 +73,12 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3() GLM_FUNC_QUALIFIER tmat4x3<T, P>::tmat4x3()
{ {
value_type const Zero(0); # ifndef GLM_FORCE_NO_CTOR_INIT
value_type const One(1); this->value[0] = col_type(1, 0, 0);
this->value[0] = col_type(One, Zero, Zero); this->value[1] = col_type(0, 1, 0);
this->value[1] = col_type(Zero, One, Zero); this->value[2] = col_type(0, 0, 1);
this->value[2] = col_type(Zero, Zero, One); this->value[3] = col_type(0, 0, 0);
this->value[3] = col_type(Zero, Zero, Zero); # endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -563,7 +563,7 @@ namespace glm
T const SrcB22 = m2[2][2]; T const SrcB22 = m2[2][2];
T const SrcB23 = m2[2][3]; T const SrcB23 = m2[2][3];
tmat3x3<T, P> Result(tmat3x3<T, P>::_null); tmat3x3<T, P> Result(uninitialize);
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03; Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03; Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02 + SrcA32 * SrcB03; Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02 + SrcA32 * SrcB03;

View File

@ -39,7 +39,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tmat4x4 struct tmat4x4
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef tvec4<T, P> col_type; typedef tvec4<T, P> col_type;

View File

@ -133,12 +133,12 @@ namespace detail
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4() GLM_FUNC_QUALIFIER tmat4x4<T, P>::tmat4x4()
{ {
T Zero(0); # ifndef GLM_FORCE_NO_CTOR_INIT
T One(1); this->value[0] = col_type(1, 0, 0, 0);
this->value[0] = col_type(One, Zero, Zero, Zero); this->value[1] = col_type(0, 1, 0, 0);
this->value[1] = col_type(Zero, One, Zero, Zero); this->value[2] = col_type(0, 0, 1, 0);
this->value[2] = col_type(Zero, Zero, One, Zero); this->value[3] = col_type(0, 0, 0, 1);
this->value[3] = col_type(Zero, Zero, Zero, One); # endif
} }
template <typename T, precision P> template <typename T, precision P>
@ -772,7 +772,7 @@ namespace detail
typename tmat4x4<T, P>::col_type const SrcB2 = m2[2]; typename tmat4x4<T, P>::col_type const SrcB2 = m2[2];
typename tmat4x4<T, P>::col_type const SrcB3 = m2[3]; typename tmat4x4<T, P>::col_type const SrcB3 = m2[3];
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0] = SrcA0 * SrcB0[0] + SrcA1 * SrcB0[1] + SrcA2 * SrcB0[2] + SrcA3 * SrcB0[3]; Result[0] = SrcA0 * SrcB0[0] + SrcA1 * SrcB0[1] + SrcA2 * SrcB0[2] + SrcA3 * SrcB0[3];
Result[1] = SrcA0 * SrcB1[0] + SrcA1 * SrcB1[1] + SrcA2 * SrcB1[2] + SrcA3 * SrcB1[3]; Result[1] = SrcA0 * SrcB1[0] + SrcA1 * SrcB1[1] + SrcA2 * SrcB1[2] + SrcA3 * SrcB1[3];
Result[2] = SrcA0 * SrcB2[0] + SrcA1 * SrcB2[1] + SrcA2 * SrcB2[2] + SrcA3 * SrcB2[3]; Result[2] = SrcA0 * SrcB2[0] + SrcA1 * SrcB2[1] + SrcA2 * SrcB2[2] + SrcA3 * SrcB2[3];

View File

@ -33,6 +33,8 @@
namespace glm namespace glm
{ {
enum ctor{uninitialize};
template <typename T, precision P> struct tvec1; template <typename T, precision P> struct tvec1;
template <typename T, precision P> struct tvec2; template <typename T, precision P> struct tvec2;
template <typename T, precision P> struct tvec3; template <typename T, precision P> struct tvec3;

View File

@ -47,8 +47,6 @@ namespace glm
////////////////////////////////////// //////////////////////////////////////
// Implementation detail // Implementation detail
enum ctor{_null};
typedef tvec1<T, P> type; typedef tvec1<T, P> type;
typedef tvec1<bool, P> bool_type; typedef tvec1<bool, P> bool_type;
typedef T value_type; typedef T value_type;

View File

@ -63,8 +63,10 @@ namespace glm
// Implicit basic constructors // Implicit basic constructors
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1() : GLM_FUNC_QUALIFIER tvec1<T, P>::tvec1()
x(static_cast<T>(0)) # ifndef GLM_FORCE_NO_CTOR_INIT
: x(0)
# endif
{} {}
template <typename T, precision P> template <typename T, precision P>

View File

@ -47,8 +47,6 @@ namespace glm
////////////////////////////////////// //////////////////////////////////////
// Implementation detail // Implementation detail
enum ctor{_null};
typedef tvec2<T, P> type; typedef tvec2<T, P> type;
typedef tvec2<bool, P> bool_type; typedef tvec2<bool, P> bool_type;
typedef T value_type; typedef T value_type;

View File

@ -63,22 +63,21 @@ namespace glm
// Implicit basic constructors // Implicit basic constructors
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2() : GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2()
x(0), # ifndef GLM_FORCE_NO_CTOR_INIT
y(0) : x(0), y(0)
# endif
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, P> const & v) : GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, P> const & v)
x(v.x), : x(v.x), y(v.y)
y(v.y)
{} {}
template <typename T, precision P> template <typename T, precision P>
template <precision Q> template <precision Q>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, Q> const & v) : GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(tvec2<T, Q> const & v)
x(v.x), : x(v.x), y(v.y)
y(v.y)
{} {}
////////////////////////////////////// //////////////////////////////////////
@ -90,14 +89,12 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(T const & s) : GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(T const & s) :
x(s), x(s), y(s)
y(s)
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(T const & s1, T const & s2) : GLM_FUNC_QUALIFIER tvec2<T, P>::tvec2(T const & s1, T const & s2) :
x(s1), x(s1), y(s2)
y(s2)
{} {}
////////////////////////////////////// //////////////////////////////////////

View File

@ -47,8 +47,6 @@ namespace glm
////////////////////////////////////// //////////////////////////////////////
// Implementation detail // Implementation detail
enum ctor{_null};
typedef tvec3<T, P> type; typedef tvec3<T, P> type;
typedef tvec3<bool, P> bool_type; typedef tvec3<bool, P> bool_type;
typedef T value_type; typedef T value_type;

View File

@ -63,25 +63,21 @@ namespace glm
// Implicit basic constructors // Implicit basic constructors
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3() : GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3()
x(0), # ifndef GLM_FORCE_NO_CTOR_INIT
y(0), : x(0), y(0), z(0)
z(0) # endif
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, P> const & v) : GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, P> const & v)
x(v.x), : x(v.x), y(v.y), z(v.z)
y(v.y),
z(v.z)
{} {}
template <typename T, precision P> template <typename T, precision P>
template <precision Q> template <precision Q>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, Q> const & v) : GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(tvec3<T, Q> const & v)
x(v.x), : x(v.x), y(v.y), z(v.z)
y(v.y),
z(v.z)
{} {}
////////////////////////////////////// //////////////////////////////////////
@ -92,17 +88,13 @@ namespace glm
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(T const & s) : GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(T const & s)
x(s), : x(s), y(s), z(s)
y(s),
z(s)
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(T const & a, T const & b, T const & c) : GLM_FUNC_QUALIFIER tvec3<T, P>::tvec3(T const & a, T const & b, T const & c)
x(a), : x(a), y(b), z(c)
y(b),
z(c)
{} {}
////////////////////////////////////// //////////////////////////////////////

View File

@ -70,8 +70,6 @@ namespace glm
////////////////////////////////////// //////////////////////////////////////
// Implementation detail // Implementation detail
enum ctor{_null};
typedef tvec4<T, P> type; typedef tvec4<T, P> type;
typedef tvec4<bool, P> bool_type; typedef tvec4<bool, P> bool_type;
typedef T value_type; typedef T value_type;

View File

@ -63,42 +63,42 @@ namespace glm
// Implicit basic constructors // Implicit basic constructors
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4() : GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4()
x(0), # ifndef GLM_FORCE_NO_CTOR_INIT
y(0), : x(0), y(0), z(0), w(0)
z(0), # endif
w(0)
{} {}
#if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2) #if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2)
template <> template <>
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4() : GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4()
data(_mm_setzero_ps()) # ifndef GLM_FORCE_NO_CTOR_INIT
: data(_mm_setzero_ps())
# endif
{} {}
template <> template <>
GLM_FUNC_QUALIFIER tvec4<float, mediump>::tvec4() : GLM_FUNC_QUALIFIER tvec4<float, mediump>::tvec4()
data(_mm_setzero_ps()) # ifndef GLM_FORCE_NO_CTOR_INIT
: data(_mm_setzero_ps())
# endif
{} {}
#endif #endif
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec4<T, P> const & v) : GLM_FUNC_QUALIFIER tvec4<T, P>::tvec4(tvec4<T, P> const & v)
x(v.x), : x(v.x), y(v.y), z(v.z), w(v.w)
y(v.y),
z(v.z),
w(v.w)
{} {}
#if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2) #if (GLM_HAS_UNRESTRICTED_UNIONS || GLM_HAS_ANONYMOUS_UNION) && (GLM_ARCH & GLM_ARCH_SSE2)
template <> template <>
GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4(tvec4<float, lowp> const & v) : GLM_FUNC_QUALIFIER tvec4<float, lowp>::tvec4(tvec4<float, lowp> const & v)
data(v.data) : data(v.data)
{} {}
template <> template <>
GLM_FUNC_QUALIFIER tvec4<float, mediump>::tvec4(tvec4<float, mediump> const & v) : GLM_FUNC_QUALIFIER tvec4<float, mediump>::tvec4(tvec4<float, mediump> const & v)
data(v.data) : data(v.data)
{} {}
#endif #endif

View File

@ -59,7 +59,7 @@ namespace glm
tvec3<T, P> axis(normalize(v)); tvec3<T, P> axis(normalize(v));
tvec3<T, P> temp((T(1) - c) * axis); tvec3<T, P> temp((T(1) - c) * axis);
tmat4x4<T, P> Rotate(tmat4x4<T, P>::_null); tmat4x4<T, P> Rotate(uninitialize);
Rotate[0][0] = c + temp[0] * axis[0]; Rotate[0][0] = c + temp[0] * axis[0];
Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2]; Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2];
Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1]; Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1];
@ -72,7 +72,7 @@ namespace glm
Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0]; Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0];
Rotate[2][2] = c + temp[2] * axis[2]; Rotate[2][2] = c + temp[2] * axis[2];
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];
Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];
Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];
@ -121,7 +121,7 @@ namespace glm
tvec3<T, P> const & v tvec3<T, P> const & v
) )
{ {
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0] = m[0] * v[0]; Result[0] = m[0] * v[0];
Result[1] = m[1] * v[1]; Result[1] = m[1] * v[1];
Result[2] = m[2] * v[2]; Result[2] = m[2] * v[2];

View File

@ -58,8 +58,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tquat struct tquat
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef tvec4<bool, P> bool_type; typedef tvec4<bool, P> bool_type;

View File

@ -60,34 +60,21 @@ namespace detail
#endif #endif
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat() : GLM_FUNC_QUALIFIER tquat<T, P>::tquat()
x(0), # ifndef GLM_FORCE_NO_CTOR_INIT
y(0), : x(0), y(0), z(0), w(1)
z(0), # endif
w(1)
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat GLM_FUNC_QUALIFIER tquat<T, P>::tquat(tquat<T, P> const & q) :
( x(q.x), y(q.y), z(q.z), w(q.w)
tquat<T, P> const & q
) :
x(q.x),
y(q.y),
z(q.z),
w(q.w)
{} {}
template <typename T, precision P> template <typename T, precision P>
template <precision Q> template <precision Q>
GLM_FUNC_QUALIFIER tquat<T, P>::tquat GLM_FUNC_QUALIFIER tquat<T, P>::tquat(tquat<T, Q> const & q) :
( x(q.x), y(q.y), z(q.z), w(q.w)
tquat<T, Q> const & q
) :
x(q.x),
y(q.y),
z(q.z),
w(q.w)
{} {}
template <typename T, precision P> template <typename T, precision P>
@ -746,7 +733,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>::_null); tquat<T, P> Result(uninitialize);
switch(biggestIndex) switch(biggestIndex)
{ {
case 0: case 0:
@ -819,7 +806,7 @@ namespace detail
tvec3<T, P> const & v tvec3<T, P> const & v
) )
{ {
tquat<T, P> Result(tquat<T, P>::_null); tquat<T, P> Result(uninitialize);
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));
@ -838,7 +825,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -851,7 +838,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -864,7 +851,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -877,7 +864,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -890,7 +877,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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;
@ -903,7 +890,7 @@ namespace detail
tquat<T, P> const & y tquat<T, P> const & y
) )
{ {
tvec4<bool, P> Result(tvec4<bool, P>::_null); tvec4<bool, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(x); ++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,7 +227,7 @@ 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>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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,7 +262,7 @@ 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>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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,7 +280,7 @@ 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>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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,7 +298,7 @@ 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>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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,7 +338,7 @@ 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<T, P>::_null); vecType<uint, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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,7 +23,7 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMin
vecType<T, P> const & y, vecType<U, P> const & b vecType<T, P> const & y, vecType<U, P> const & b
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -36,7 +36,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
T y, const vecType<U, P>& b T y, const vecType<U, P>& b
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -49,7 +49,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
vecType<T, P> const & y, U b vecType<T, P> const & y, U b
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -76,7 +76,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
vecType<T, P> const & z, vecType<U, P> const & c vecType<T, P> const & z, vecType<U, P> const & c
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -110,7 +110,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
vecType<T, P> const & w, vecType<U, P> const & d vecType<T, P> const & w, vecType<U, P> const & d
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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]);
@ -135,7 +135,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
T Test1 = min(x, y); T Test1 = min(x, y);
T Test2 = min(z, w); T Test2 = min(z, w);
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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];
@ -155,7 +155,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMin
vecType<T, P> const & w, U d vecType<T, P> const & w, U d
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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]);
@ -182,7 +182,7 @@ GLM_FUNC_QUALIFIER tvec2<U, P> associatedMax
vecType<T, P> const & y, vecType<U, P> const & b vecType<T, P> const & y, vecType<U, P> const & b
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -196,7 +196,7 @@ GLM_FUNC_QUALIFIER vecType<T, P> associatedMax
T y, vecType<U, P> const & b T y, vecType<U, P> const & b
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -210,7 +210,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
vecType<T, P> const & y, U b vecType<T, P> const & y, U b
) )
{ {
vecType<T, P> Result(vecType<T, P>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -238,7 +238,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
vecType<T, P> const & z, vecType<U, P> const & c vecType<T, P> const & z, vecType<U, P> const & c
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -253,7 +253,7 @@ GLM_FUNC_QUALIFIER vecType<T, P> associatedMax
T z, vecType<U, P> const & c T z, vecType<U, P> const & c
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -268,7 +268,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
vecType<T, P> const & z, U c vecType<T, P> const & z, U c
) )
{ {
vecType<T, P> Result(vecType<T, P>::_null); vecType<T, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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;
@ -302,7 +302,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
vecType<T, P> const & w, vecType<U, P> const & d vecType<T, P> const & w, vecType<U, P> const & d
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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]);
@ -327,7 +327,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
T Test1 = max(x, y); T Test1 = max(x, y);
T Test2 = max(z, w); T Test2 = max(z, w);
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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];
@ -347,7 +347,7 @@ GLM_FUNC_QUALIFIER vecType<U, P> associatedMax
vecType<T, P> const & w, U d vecType<T, P> const & w, U d
) )
{ {
vecType<U, P> Result(vecType<U, P>::_null); vecType<U, P> Result(uninitialize);
for(detail::component_count_t i = 0; i < detail::component_count(Result); ++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]);

View File

@ -57,7 +57,6 @@ namespace glm
template <typename T, precision P> template <typename T, precision P>
struct tdualquat struct tdualquat
{ {
enum ctor{_null};
typedef T value_type; typedef T value_type;
typedef glm::tquat<T, P> part_type; typedef glm::tquat<T, P> part_type;

View File

@ -46,26 +46,22 @@ namespace glm
#endif #endif
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat() : GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat()
real(tquat<T, P>()), # ifndef GLM_FORCE_NO_CTOR_INIT
dual(tquat<T, P>(T(0), T(0), T(0), T(0))) : real(tquat<T, P>())
, dual(tquat<T, P>(0, 0, 0, 0))
# endif
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat(tdualquat<T, P> const & d) :
(
tdualquat<T, P> const & d
) :
real(d.real), real(d.real),
dual(d.dual) dual(d.dual)
{} {}
template <typename T, precision P> template <typename T, precision P>
template <precision Q> template <precision Q>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat(tdualquat<T, Q> const & d) :
(
tdualquat<T, Q> const & d
) :
real(d.real), real(d.real),
dual(d.dual) dual(d.dual)
{} {}
@ -78,12 +74,9 @@ namespace glm
{} {}
template <typename T, precision P> template <typename T, precision P>
GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat GLM_FUNC_QUALIFIER tdualquat<T, P>::tdualquat(tquat<T, P> const & r) :
(
tquat<T, P> const & r
) :
real(r), real(r),
dual(tquat<T, P>(T(0), T(0), T(0), T(0))) dual(tquat<T, P>(0, 0, 0, 0))
{} {}
template <typename T, precision P> template <typename T, precision P>

View File

@ -51,7 +51,7 @@ namespace glm
T const c = cos(a); T const c = cos(a);
T const s = sin(a); T const s = sin(a);
tmat3x3<T, P> Result(tmat3x3<T, P>::_null); tmat3x3<T, P> Result(uninitialize);
Result[0] = m[0] * c + m[1] * s; Result[0] = m[0] * c + m[1] * s;
Result[1] = m[0] * -s + m[1] * c; Result[1] = m[0] * -s + m[1] * c;
Result[2] = m[2]; Result[2] = m[2];
@ -63,7 +63,7 @@ namespace glm
tmat3x3<T, P> const & m, tmat3x3<T, P> const & m,
tvec2<T, P> const & v) tvec2<T, P> const & v)
{ {
tmat3x3<T, P> Result(tmat3x3<T, P>::_null); tmat3x3<T, P> Result(uninitialize);
Result[0] = m[0] * v[0]; Result[0] = m[0] * v[0];
Result[1] = m[1] * v[1]; Result[1] = m[1] * v[1];
Result[2] = m[2]; Result[2] = m[2];

View File

@ -44,7 +44,7 @@ namespace glm
tvec3<T, P> const temp((static_cast<T>(1) - c) * axis); tvec3<T, P> const temp((static_cast<T>(1) - c) * axis);
tmat4x4<T, P> Rotate(tmat4x4<T, P>::_null); tmat4x4<T, P> Rotate(uninitialize);
Rotate[0][0] = c + temp[0] * axis[0]; Rotate[0][0] = c + temp[0] * axis[0];
Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2]; Rotate[0][1] = 0 + temp[0] * axis[1] + s * axis[2];
Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1]; Rotate[0][2] = 0 + temp[0] * axis[2] - s * axis[1];
@ -57,7 +57,7 @@ namespace glm
Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0]; Rotate[2][1] = 0 + temp[2] * axis[1] - s * axis[0];
Rotate[2][2] = c + temp[2] * axis[2]; Rotate[2][2] = c + temp[2] * axis[2];
tmat4x4<T, P> Result(tmat4x4<T, P>::_null); tmat4x4<T, P> Result(uninitialize);
Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2]; Result[0] = m[0] * Rotate[0][0] + m[1] * Rotate[0][1] + m[2] * Rotate[0][2];
Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2]; Result[1] = m[0] * Rotate[1][0] + m[1] * Rotate[1][1] + m[2] * Rotate[1][2];
Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2]; Result[2] = m[0] * Rotate[2][0] + m[1] * Rotate[2][1] + m[2] * Rotate[2][2];

View File

@ -60,7 +60,6 @@ namespace detail
/// \ingroup gtx_simd_mat4 /// \ingroup gtx_simd_mat4
GLM_ALIGNED_STRUCT(16) fmat4x4SIMD GLM_ALIGNED_STRUCT(16) fmat4x4SIMD
{ {
enum ctor{_null};
typedef float value_type; typedef float value_type;
typedef fvec4SIMD col_type; typedef fvec4SIMD col_type;
typedef fvec4SIMD row_type; typedef fvec4SIMD row_type;

View File

@ -43,12 +43,12 @@ GLM_FUNC_QUALIFIER fvec4SIMD const & fmat4x4SIMD::operator[]
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD() GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD()
{ {
#ifndef GLM_SIMD_ENABLE_DEFAULT_INIT # ifndef GLM_FORCE_NO_CTOR_INIT
this->Data[0] = fvec4SIMD(1.0f, 0, 0, 0); this->Data[0] = fvec4SIMD(1, 0, 0, 0);
this->Data[1] = fvec4SIMD(0, 1.0f, 0, 0); this->Data[1] = fvec4SIMD(0, 1, 0, 0);
this->Data[2] = fvec4SIMD(0, 0, 1.0f, 0); this->Data[2] = fvec4SIMD(0, 0, 1, 0);
this->Data[3] = fvec4SIMD(0, 0, 0, 1.0f); this->Data[3] = fvec4SIMD(0, 0, 0, 1);
#endif # endif
} }
GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD(float const & s) GLM_FUNC_QUALIFIER fmat4x4SIMD::fmat4x4SIMD(float const & s)
@ -554,7 +554,7 @@ GLM_FUNC_QUALIFIER detail::fmat4x4SIMD outerProduct
__m128 Shu2 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(2, 2, 2, 2)); __m128 Shu2 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(2, 2, 2, 2));
__m128 Shu3 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(3, 3, 3, 3)); __m128 Shu3 = _mm_shuffle_ps(r.Data, r.Data, _MM_SHUFFLE(3, 3, 3, 3));
detail::fmat4x4SIMD result(detail::fmat4x4SIMD::_null); detail::fmat4x4SIMD result(uninitialize);
result[0].Data = _mm_mul_ps(c.Data, Shu0); result[0].Data = _mm_mul_ps(c.Data, Shu0);
result[1].Data = _mm_mul_ps(c.Data, Shu1); result[1].Data = _mm_mul_ps(c.Data, Shu1);
result[2].Data = _mm_mul_ps(c.Data, Shu2); result[2].Data = _mm_mul_ps(c.Data, Shu2);

View File

@ -69,7 +69,6 @@ namespace detail
/// \ingroup gtx_simd_vec4 /// \ingroup gtx_simd_vec4
GLM_ALIGNED_STRUCT(16) fquatSIMD GLM_ALIGNED_STRUCT(16) fquatSIMD
{ {
enum ctor{null};
typedef __m128 value_type; typedef __m128 value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
static size_type value_size(); static size_type value_size();

View File

@ -34,9 +34,9 @@ void print(const fvec4SIMD &v)
// Implicit basic constructors // Implicit basic constructors
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD() GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD()
#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT # ifdef GLM_FORCE_NO_CTOR_INIT
: Data(_mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f)) : Data(_mm_set_ps(1.0f, 0.0f, 0.0f, 0.0f))
#endif # endif
{} {}
GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(__m128 const & Data) : GLM_FUNC_QUALIFIER fquatSIMD::fquatSIMD(__m128 const & Data) :

View File

@ -88,7 +88,6 @@ namespace detail
/// \ingroup gtx_simd_vec4 /// \ingroup gtx_simd_vec4
GLM_ALIGNED_STRUCT(16) fvec4SIMD GLM_ALIGNED_STRUCT(16) fvec4SIMD
{ {
enum ctor{null};
typedef __m128 value_type; typedef __m128 value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
static size_type value_size(); static size_type value_size();

View File

@ -20,9 +20,9 @@ struct mask
// Implicit basic constructors // Implicit basic constructors
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD() GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD()
#ifdef GLM_SIMD_ENABLE_DEFAULT_INIT # ifdef GLM_FORCE_NO_CTOR_INIT
: Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f)) : Data(_mm_set_ps(0.0f, 0.0f, 0.0f, 0.0f))
#endif # endif
{} {}
GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(__m128 const & Data) : GLM_FUNC_QUALIFIER fvec4SIMD::fvec4SIMD(__m128 const & Data) :

View File

@ -73,6 +73,8 @@ GLM 0.9.6.0: 2014-XX-XX
- Undetected C++ compiler automatically compile with GLM_FORCE_CXX98 and - Undetected C++ compiler automatically compile with GLM_FORCE_CXX98 and
GLM_FORCE_PURE GLM_FORCE_PURE
- Separated Apple Clang and LLVM compiler detection - Separated Apple Clang and LLVM compiler detection
- Added GLM_FORCE_NO_CTOR_INIT
- Added 'uninitialize' to explicitly not initialize a GLM type
================================================================================ ================================================================================
GLM 0.9.5.4: 2014-06-21 GLM 0.9.5.4: 2014-06-21