Platformer in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
1.8 KiB

5 years ago
  1. #include <glm/gtc/epsilon.hpp>
  2. #include <glm/gtc/constants.hpp>
  3. #include <glm/gtc/quaternion.hpp>
  4. #include <glm/vector_relational.hpp>
  5. int test_defined()
  6. {
  7. glm::epsilonEqual(glm::vec2(), glm::vec2(), glm::vec2());
  8. glm::epsilonEqual(glm::vec3(), glm::vec3(), glm::vec3());
  9. glm::epsilonEqual(glm::vec4(), glm::vec4(), glm::vec4());
  10. glm::epsilonNotEqual(glm::vec2(), glm::vec2(), glm::vec2());
  11. glm::epsilonNotEqual(glm::vec3(), glm::vec3(), glm::vec3());
  12. glm::epsilonNotEqual(glm::vec4(), glm::vec4(), glm::vec4());
  13. glm::epsilonEqual(glm::vec2(), glm::vec2(), 0.0f);
  14. glm::epsilonEqual(glm::vec3(), glm::vec3(), 0.0f);
  15. glm::epsilonEqual(glm::vec4(), glm::vec4(), 0.0f);
  16. glm::epsilonEqual(glm::quat(), glm::quat(), 0.0f);
  17. glm::epsilonNotEqual(glm::vec2(), glm::vec2(), 0.0f);
  18. glm::epsilonNotEqual(glm::vec3(), glm::vec3(), 0.0f);
  19. glm::epsilonNotEqual(glm::vec4(), glm::vec4(), 0.0f);
  20. glm::epsilonNotEqual(glm::quat(), glm::quat(), 0.0f);
  21. return 0;
  22. }
  23. template<typename T>
  24. int test_equal()
  25. {
  26. int Error(0);
  27. {
  28. T A = glm::epsilon<T>();
  29. T B = glm::epsilon<T>();
  30. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  31. }
  32. {
  33. T A(0);
  34. T B = static_cast<T>(0) + glm::epsilon<T>();
  35. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  36. }
  37. {
  38. T A(0);
  39. T B = static_cast<T>(0) - glm::epsilon<T>();
  40. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  41. }
  42. {
  43. T A = static_cast<T>(0) + glm::epsilon<T>();
  44. T B = static_cast<T>(0);
  45. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  46. }
  47. {
  48. T A = static_cast<T>(0) - glm::epsilon<T>();
  49. T B = static_cast<T>(0);
  50. Error += glm::epsilonEqual(A, B, glm::epsilon<T>() * T(2)) ? 0 : 1;
  51. }
  52. return Error;
  53. }
  54. int main()
  55. {
  56. int Error(0);
  57. Error += test_defined();
  58. Error += test_equal<float>();
  59. Error += test_equal<double>();
  60. return Error;
  61. }