Added GLM_FORCE_SINGLE_ONLY to use GLM on platforms that don't support double #627
This commit is contained in:
@@ -600,6 +600,16 @@
|
||||
# endif
|
||||
#endif//GLM_MESSAGES
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Force single only (remove explicit float64 types)
|
||||
|
||||
#if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_MESSAGE_SINGLE_ONLY_DISPLAYED)
|
||||
# define GLM_MESSAGE_SINGLE_ONLY_DISPLAYED
|
||||
# ifdef GLM_FORCE_SINGLE_ONLY
|
||||
# pragma message("GLM: Using only single precision floating-point types")
|
||||
# endif
|
||||
#endif//GLM_MESSAGES
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Clip control
|
||||
|
||||
|
||||
@@ -9,7 +9,10 @@ namespace glm{
|
||||
namespace detail
|
||||
{
|
||||
typedef float float32;
|
||||
typedef double float64;
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
typedef double float64;
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
}//namespace detail
|
||||
|
||||
typedef float lowp_float_t;
|
||||
@@ -53,13 +56,18 @@ namespace detail
|
||||
#endif
|
||||
|
||||
typedef float float32;
|
||||
typedef double float64;
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
typedef double float64;
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
////////////////////
|
||||
// check type sizes
|
||||
#ifndef GLM_STATIC_ASSERT_NULL
|
||||
GLM_STATIC_ASSERT(sizeof(glm::float32) == 4, "float32 size isn't 4 bytes on this platform");
|
||||
GLM_STATIC_ASSERT(sizeof(glm::float64) == 8, "float64 size isn't 8 bytes on this platform");
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
GLM_STATIC_ASSERT(sizeof(glm::float64) == 8, "float64 size isn't 8 bytes on this platform");
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
#endif//GLM_STATIC_ASSERT_NULL
|
||||
|
||||
/// @}
|
||||
|
||||
@@ -592,28 +592,27 @@ namespace glm
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float32 float32;
|
||||
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float64 float64;
|
||||
|
||||
|
||||
/// 32 bit single-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float32 float32_t;
|
||||
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float64 float64_t;
|
||||
|
||||
|
||||
/// 32 bit single-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef float32 f32;
|
||||
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef float64 f64;
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float64 float64;
|
||||
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef detail::float64 float64_t;
|
||||
|
||||
/// 64 bit double-qualifier floating-point scalar.
|
||||
/// @see gtc_type_precision
|
||||
typedef float64 f64;
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Single-qualifier floating-point vector of 1 component.
|
||||
/// @see gtc_type_precision
|
||||
@@ -648,22 +647,23 @@ namespace glm
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<4, f32, defaultp> f32vec4;
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
/// Double-qualifier floating-point vector of 1 component.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<1, f64, defaultp> f64vec1;
|
||||
|
||||
/// Double-qualifier floating-point vector of 1 component.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<1, f64, defaultp> f64vec1;
|
||||
/// Double-qualifier floating-point vector of 2 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<2, f64, defaultp> f64vec2;
|
||||
|
||||
/// Double-qualifier floating-point vector of 2 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<2, f64, defaultp> f64vec2;
|
||||
/// Double-qualifier floating-point vector of 3 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<3, f64, defaultp> f64vec3;
|
||||
|
||||
/// Double-qualifier floating-point vector of 3 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<3, f64, defaultp> f64vec3;
|
||||
|
||||
/// Double-qualifier floating-point vector of 4 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<4, f64, defaultp> f64vec4;
|
||||
/// Double-qualifier floating-point vector of 4 components.
|
||||
/// @see gtc_type_precision
|
||||
typedef vec<4, f64, defaultp> f64vec4;
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
|
||||
//////////////////////
|
||||
@@ -785,6 +785,8 @@ namespace glm
|
||||
typedef mat<4, 4, f32, defaultp> f32mat4x4;
|
||||
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Double-qualifier floating-point 1x1 matrix.
|
||||
/// @see gtc_type_precision
|
||||
//typedef detail::tmat1x1<f64, defaultp> f64mat1;
|
||||
@@ -842,6 +844,8 @@ namespace glm
|
||||
/// @see gtc_type_precision
|
||||
typedef mat<4, 4, f64, defaultp> f64mat4x4;
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
//////////////////////////
|
||||
// Quaternion types
|
||||
|
||||
@@ -849,10 +853,14 @@ namespace glm
|
||||
/// @see gtc_type_precision
|
||||
typedef tquat<f32, defaultp> f32quat;
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Double-qualifier floating-point quaternion.
|
||||
/// @see gtc_type_precision
|
||||
typedef tquat<f64, defaultp> f64quat;
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// @}
|
||||
}//namespace glm
|
||||
|
||||
|
||||
@@ -622,28 +622,30 @@ namespace glm
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);
|
||||
|
||||
/// 64 bit double-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
|
||||
|
||||
|
||||
/// 32 bit single-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);
|
||||
|
||||
/// 64 bit double-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
|
||||
|
||||
|
||||
/// 32 bit single-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// 64 bit double-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
|
||||
|
||||
/// 64 bit double-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
|
||||
|
||||
/// 64 bit double-qualifier floating-point aligned scalar.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
|
||||
/// Single-qualifier floating-point aligned vector of 1 component.
|
||||
/// @see gtx_type_aligned
|
||||
@@ -678,7 +680,7 @@ namespace glm
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);
|
||||
|
||||
|
||||
|
||||
/// Single-qualifier floating-point aligned vector of 1 component.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);
|
||||
@@ -713,6 +715,8 @@ namespace glm
|
||||
GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32);
|
||||
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Double-qualifier floating-point aligned vector of 1 component.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);
|
||||
@@ -729,6 +733,7 @@ namespace glm
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
//////////////////////
|
||||
// Float matrix types
|
||||
@@ -883,6 +888,8 @@ namespace glm
|
||||
GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);
|
||||
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Double-qualifier floating-point aligned 1x1 matrix.
|
||||
/// @see gtx_type_aligned
|
||||
//typedef detail::tmat1x1<f64, defaultp> f64mat1;
|
||||
@@ -940,6 +947,8 @@ namespace glm
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
|
||||
//////////////////////////
|
||||
// Quaternion types
|
||||
@@ -960,10 +969,14 @@ namespace glm
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);
|
||||
|
||||
# ifndef GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// Double-qualifier floating-point aligned quaternion.
|
||||
/// @see gtx_type_aligned
|
||||
GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);
|
||||
|
||||
# endif//GLM_FORCE_SINGLE_ONLY
|
||||
|
||||
/// @}
|
||||
}//namespace glm
|
||||
|
||||
|
||||
Reference in New Issue
Block a user