00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030
00031 #include "precision.hpp"
00032 #include "type_int.hpp"
00033
00034 namespace glm{
00035 namespace detail
00036 {
00037 template <typename T, precision P> struct tvec1;
00038 template <typename T, precision P> struct tvec2;
00039 template <typename T, precision P> struct tvec3;
00040 template <typename T, precision P> struct tvec4;
00041 }
00042
00043 typedef detail::tvec1<float, highp> highp_vec1_t;
00044 typedef detail::tvec1<float, mediump> mediump_vec1_t;
00045 typedef detail::tvec1<float, lowp> lowp_vec1_t;
00046 typedef detail::tvec1<int, highp> highp_ivec1_t;
00047 typedef detail::tvec1<int, mediump> mediump_ivec1_t;
00048 typedef detail::tvec1<int, lowp> lowp_ivec1_t;
00049 typedef detail::tvec1<uint, highp> highp_uvec1_t;
00050 typedef detail::tvec1<uint, mediump> mediump_uvec1_t;
00051 typedef detail::tvec1<uint, lowp> lowp_uvec1_t;
00052 typedef detail::tvec1<bool, highp> highp_bvec1_t;
00053 typedef detail::tvec1<bool, mediump> mediump_bvec1_t;
00054 typedef detail::tvec1<bool, lowp> lowp_bvec1_t;
00055
00058
00064 typedef detail::tvec2<float, highp> highp_vec2;
00065
00071 typedef detail::tvec2<float, mediump> mediump_vec2;
00072
00078 typedef detail::tvec2<float, lowp> lowp_vec2;
00079
00085 typedef detail::tvec2<double, highp> highp_dvec2;
00086
00092 typedef detail::tvec2<double, mediump> mediump_dvec2;
00093
00099 typedef detail::tvec2<double, lowp> lowp_dvec2;
00100
00106 typedef detail::tvec2<int, highp> highp_ivec2;
00107
00113 typedef detail::tvec2<int, mediump> mediump_ivec2;
00114
00120 typedef detail::tvec2<int, lowp> lowp_ivec2;
00121
00127 typedef detail::tvec2<uint, highp> highp_uvec2;
00128
00134 typedef detail::tvec2<uint, mediump> mediump_uvec2;
00135
00141 typedef detail::tvec2<uint, lowp> lowp_uvec2;
00142
00148 typedef detail::tvec2<bool, highp> highp_bvec2;
00149
00155 typedef detail::tvec2<bool, mediump> mediump_bvec2;
00156
00162 typedef detail::tvec2<bool, lowp> lowp_bvec2;
00163
00165
00166
00169
00175 typedef detail::tvec3<float, highp> highp_vec3;
00176
00182 typedef detail::tvec3<float, mediump> mediump_vec3;
00183
00189 typedef detail::tvec3<float, lowp> lowp_vec3;
00190
00196 typedef detail::tvec3<double, highp> highp_dvec3;
00197
00203 typedef detail::tvec3<double, mediump> mediump_dvec3;
00204
00210 typedef detail::tvec3<double, lowp> lowp_dvec3;
00211
00217 typedef detail::tvec3<int, highp> highp_ivec3;
00218
00224 typedef detail::tvec3<int, mediump> mediump_ivec3;
00225
00231 typedef detail::tvec3<int, lowp> lowp_ivec3;
00232
00238 typedef detail::tvec3<uint, highp> highp_uvec3;
00239
00245 typedef detail::tvec3<uint, mediump> mediump_uvec3;
00246
00252 typedef detail::tvec3<uint, lowp> lowp_uvec3;
00253
00258 typedef detail::tvec3<bool, highp> highp_bvec3;
00259
00264 typedef detail::tvec3<bool, mediump> mediump_bvec3;
00265
00270 typedef detail::tvec3<bool, lowp> lowp_bvec3;
00271
00273
00276
00281 typedef detail::tvec4<float, highp> highp_vec4;
00282
00287 typedef detail::tvec4<float, mediump> mediump_vec4;
00288
00293 typedef detail::tvec4<float, lowp> lowp_vec4;
00294
00299 typedef detail::tvec4<double, highp> highp_dvec4;
00300
00305 typedef detail::tvec4<double, mediump> mediump_dvec4;
00306
00311 typedef detail::tvec4<double, lowp> lowp_dvec4;
00312
00317 typedef detail::tvec4<int, highp> highp_ivec4;
00318
00323 typedef detail::tvec4<int, mediump> mediump_ivec4;
00324
00329 typedef detail::tvec4<int, lowp> lowp_ivec4;
00330
00335 typedef detail::tvec4<uint, highp> highp_uvec4;
00336
00341 typedef detail::tvec4<uint, mediump> mediump_uvec4;
00342
00347 typedef detail::tvec4<uint, lowp> lowp_uvec4;
00348
00353 typedef detail::tvec4<bool, highp> highp_bvec4;
00354
00359 typedef detail::tvec4<bool, mediump> mediump_bvec4;
00360
00365 typedef detail::tvec4<bool, lowp> lowp_bvec4;
00366
00368
00371
00373
00374
00375 #if(defined(GLM_PRECISION_LOWP_FLOAT))
00376 typedef lowp_vec2 vec2;
00377 typedef lowp_vec3 vec3;
00378 typedef lowp_vec4 vec4;
00379 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
00380 typedef mediump_vec2 vec2;
00381 typedef mediump_vec3 vec3;
00382 typedef mediump_vec4 vec4;
00383 #else //defined(GLM_PRECISION_HIGHP_FLOAT)
00384
00385
00386
00387 typedef highp_vec2 vec2;
00388
00392 typedef highp_vec3 vec3;
00393
00397 typedef highp_vec4 vec4;
00398 #endif//GLM_PRECISION
00399
00401
00402
00403 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
00404 typedef lowp_dvec2 dvec2;
00405 typedef lowp_dvec3 dvec3;
00406 typedef lowp_dvec4 dvec4;
00407 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
00408 typedef mediump_dvec2 dvec2;
00409 typedef mediump_dvec3 dvec3;
00410 typedef mediump_dvec4 dvec4;
00411 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
00412
00413
00414
00415 typedef highp_dvec2 dvec2;
00416
00420 typedef highp_dvec3 dvec3;
00421
00425 typedef highp_dvec4 dvec4;
00426 #endif//GLM_PRECISION
00427
00429
00430
00431 #if(defined(GLM_PRECISION_LOWP_INT))
00432 typedef lowp_ivec2 ivec2;
00433 typedef lowp_ivec3 ivec3;
00434 typedef lowp_ivec4 ivec4;
00435 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
00436 typedef mediump_ivec2 ivec2;
00437 typedef mediump_ivec3 ivec3;
00438 typedef mediump_ivec4 ivec4;
00439 #else //defined(GLM_PRECISION_HIGHP_INT)
00440
00441
00442
00443 typedef highp_ivec2 ivec2;
00444
00448 typedef highp_ivec3 ivec3;
00449
00453 typedef highp_ivec4 ivec4;
00454 #endif//GLM_PRECISION
00455
00457
00458
00459 #if(defined(GLM_PRECISION_LOWP_UINT))
00460 typedef lowp_uvec2 uvec2;
00461 typedef lowp_uvec3 uvec3;
00462 typedef lowp_uvec4 uvec4;
00463 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
00464 typedef mediump_uvec2 uvec2;
00465 typedef mediump_uvec3 uvec3;
00466 typedef mediump_uvec4 uvec4;
00467 #else //defined(GLM_PRECISION_HIGHP_UINT)
00468
00469
00470
00471 typedef highp_uvec2 uvec2;
00472
00476 typedef highp_uvec3 uvec3;
00477
00481 typedef highp_uvec4 uvec4;
00482 #endif//GLM_PRECISION
00483
00485
00486
00487 #if(defined(GLM_PRECISION_LOWP_BOOL))
00488 typedef lowp_bvec2 bvec2;
00489 typedef lowp_bvec3 bvec3;
00490 typedef lowp_bvec4 bvec4;
00491 #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
00492 typedef mediump_bvec2 bvec2;
00493 typedef mediump_bvec3 bvec3;
00494 typedef mediump_bvec4 bvec4;
00495 #else //defined(GLM_PRECISION_HIGHP_BOOL)
00496
00497
00498
00499 typedef highp_bvec2 bvec2;
00500
00504 typedef highp_bvec3 bvec3;
00505
00509 typedef highp_bvec4 bvec4;
00510 #endif//GLM_PRECISION
00511
00513 }