Fixed length function for half vec* types

This commit is contained in:
Christophe Riccio 2011-09-18 19:28:48 +01:00
parent 38837a888d
commit 0c7dadef8e
3 changed files with 109 additions and 0 deletions

View File

@ -28,6 +28,7 @@ namespace detail
typedef thalf value_type; typedef thalf value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
static size_type value_size(); static size_type value_size();
GLM_FUNC_DECL size_type length() const;
typedef tvec2<thalf> type; typedef tvec2<thalf> type;
typedef tvec2<bool> bool_type; typedef tvec2<bool> bool_type;
@ -120,6 +121,7 @@ namespace detail
typedef thalf value_type; typedef thalf value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
static size_type value_size(); static size_type value_size();
GLM_FUNC_DECL size_type length() const;
typedef tvec3<thalf> type; typedef tvec3<thalf> type;
typedef tvec3<bool> bool_type; typedef tvec3<bool> bool_type;
@ -216,6 +218,7 @@ namespace detail
typedef thalf value_type; typedef thalf value_type;
typedef std::size_t size_type; typedef std::size_t size_type;
static size_type value_size(); static size_type value_size();
GLM_FUNC_DECL size_type length() const;
typedef tvec4<thalf> type; typedef tvec4<thalf> type;
typedef tvec4<bool> bool_type; typedef tvec4<bool> bool_type;

View File

@ -20,6 +20,11 @@ GLM_FUNC_QUALIFIER tvec2<thalf>::size_type tvec2<thalf>::value_size()
return 2; return 2;
} }
GLM_FUNC_QUALIFIER typename tvec2<thalf>::size_type tvec2<thalf>::length() const
{
return 2;
}
////////////////////////////////////// //////////////////////////////////////
// Accesses // Accesses
@ -288,6 +293,11 @@ GLM_FUNC_QUALIFIER tvec3<thalf>::size_type tvec3<thalf>::value_size()
return 3; return 3;
} }
GLM_FUNC_QUALIFIER typename tvec3<thalf>::size_type tvec3<thalf>::length() const
{
return 3;
}
////////////////////////////////////// //////////////////////////////////////
// Accesses // Accesses
@ -600,6 +610,12 @@ GLM_FUNC_QUALIFIER tvec4<thalf>::size_type tvec4<thalf>::value_size()
return 4; return 4;
} }
GLM_FUNC_QUALIFIER typename tvec4<thalf>::size_type tvec4<thalf>::length() const
{
return 4;
}
////////////////////////////////////// //////////////////////////////////////
// Accesses // Accesses

View File

@ -168,18 +168,108 @@ int test_half_ctor_vec2()
int test_half_ctor_vec3() int test_half_ctor_vec3()
{ {
int Error = 0;
{
glm::hvec3 A(1, 2, 3);
glm::hvec3 B(A);
glm::vec3 C(1, 2, 3);
glm::hvec3 D(C);
glm::dvec3 E(1, 2, 3);
glm::hvec3 F(E);
glm::hvec3 G(1, 2.0, 3);
glm::hvec3 H;
H = A;
Error += A == B ? 0 : 1;
//Error += C == D ? 0 : 1;
//Error += E == F ? 0 : 1;
Error += A == G ? 0 : 1;
Error += A == H ? 0 : 1;
}
{
glm::hvec3 A(1);
glm::vec3 B(1);
//Error += A == B ? 0 : 1;
}
return Error;
} }
int test_half_ctor_vec4() int test_half_ctor_vec4()
{ {
int Error = 0;
{
glm::hvec4 A(1, 2, 3, 4);
glm::hvec4 B(A);
glm::vec4 C(1, 2, 3, 4);
glm::hvec4 D(C);
glm::dvec4 E(1, 2, 3, 4);
glm::hvec4 F(E);
glm::hvec4 G(1, 2.0, 3, 4);
glm::hvec4 H;
H = A;
Error += A == B ? 0 : 1;
//Error += C == D ? 0 : 1;
//Error += E == F ? 0 : 1;
Error += A == G ? 0 : 1;
Error += A == H ? 0 : 1;
}
{
glm::hvec4 A(1);
glm::vec4 B(1);
//Error += A == B ? 0 : 1;
}
return Error;
}
int test_hvec2_size()
{
int Error = 0;
Error += sizeof(glm::hvec2) <= sizeof(glm::lowp_vec2) ? 0 : 1;
Error += 4 == sizeof(glm::hvec2) ? 0 : 1;
Error += glm::hvec2().length() == 2 ? 0 : 1;
return Error;
}
int test_hvec3_size()
{
int Error = 0;
Error += sizeof(glm::hvec3) <= sizeof(glm::lowp_vec3) ? 0 : 1;
Error += 6 <= sizeof(glm::hvec3) ? 0 : 1;
Error += glm::hvec3().length() == 3 ? 0 : 1;
return Error;
}
int test_hvec4_size()
{
int Error = 0;
Error += sizeof(glm::hvec4) <= sizeof(glm::lowp_vec4) ? 0 : 1;
Error += 8 <= sizeof(glm::hvec4) ? 0 : 1;
Error += glm::hvec4().length() == 4 ? 0 : 1;
return Error;
} }
int main() int main()
{ {
int Error = 0; int Error = 0;
Error += test_hvec2_size();
Error += test_hvec3_size();
Error += test_hvec4_size();
Error += test_half_ctor_vec2(); Error += test_half_ctor_vec2();
Error += test_half_ctor_vec3(); Error += test_half_ctor_vec3();
Error += test_half_ctor_vec4(); Error += test_half_ctor_vec4();