type_float.hpp

00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2008-08-22
00005 // Updated : 2010-02-08
00006 // Licence : This source is under MIT License
00007 // File    : glm/core/type_float.hpp
00009 
00010 #ifndef glm_core_type_float
00011 #define glm_core_type_float
00012 
00013 #include "type_half.hpp"
00014 #include "setup.hpp"
00015 
00016 namespace glm
00017 {
00018         namespace detail
00019         {
00020                 GLM_DETAIL_IS_FLOAT(detail::thalf);
00021                 GLM_DETAIL_IS_FLOAT(float);
00022                 GLM_DETAIL_IS_FLOAT(double);
00023                 GLM_DETAIL_IS_FLOAT(long double);
00024         }
00025         //namespace detail
00026 
00027         namespace core{
00028         namespace type{
00029 
00030         namespace precision
00031         {
00032 #ifdef GLM_USE_HALF_SCALAR
00033                 typedef detail::thalf           lowp_float_t;
00034 #else//GLM_USE_HALF_SCALAR
00035                 typedef float                           lowp_float_t;
00036 #endif//GLM_USE_HALF_SCALAR
00037                 typedef float                           mediump_float_t;
00038                 typedef double                          highp_float_t;
00039 
00044                 typedef lowp_float_t            lowp_float;
00049                 typedef mediump_float_t mediump_float;
00054                 typedef highp_float_t           highp_float;
00055         }
00056         //namespace precision
00057 
00058 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
00059         typedef precision::mediump_float                                float_t;
00060 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
00061         typedef precision::highp_float                          float_t;
00062 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
00063         typedef precision::mediump_float                                float_t;
00064 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
00065         typedef precision::lowp_float                                   float_t;
00066 #else
00067 #       error "GLM error: multiple default precision requested for floating-point types"
00068 #endif
00069 
00070         }//namespace type
00071         }//namespace core
00072 }//namespace glm
00073 
00074 #endif//glm_core_type_float