gtx_range.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #define GLM_ENABLE_EXPERIMENTAL
  2. #include <glm/glm.hpp>
  3. #include <glm/gtc/epsilon.hpp>
  4. #if GLM_HAS_RANGE_FOR
  5. #include <glm/gtx/range.hpp>
  6. int test_vec()
  7. {
  8. int Error = 0;
  9. {
  10. glm::ivec3 const v(1, 2, 3);
  11. int count = 0;
  12. glm::ivec3 Result(0);
  13. for(int x : v)
  14. {
  15. Result[count] = x;
  16. count++;
  17. }
  18. Error += count == 3 ? 0 : 1;
  19. Error += v == Result ? 0 : 1;
  20. }
  21. {
  22. glm::ivec3 v(1, 2, 3);
  23. for(int& x : v)
  24. x = 0;
  25. Error += glm::all(glm::equal(v, glm::ivec3(0))) ? 0 : 1;
  26. }
  27. return Error;
  28. }
  29. int test_mat()
  30. {
  31. int Error = 0;
  32. {
  33. glm::mat4x3 m(1.0f);
  34. int count = 0;
  35. float Sum = 0.0f;
  36. for(float x : m)
  37. {
  38. count++;
  39. Sum += x;
  40. }
  41. Error += count == 12 ? 0 : 1;
  42. Error += glm::epsilonEqual(Sum, 3.0f, 0.001f) ? 0 : 1;
  43. }
  44. {
  45. glm::mat4x3 m(1.0f);
  46. for (float& x : m) { x = 0; }
  47. glm::vec4 v(1, 1, 1, 1);
  48. Error += glm::all(glm::equal(m*v, glm::vec3(0, 0, 0))) ? 0 : 1;
  49. }
  50. return Error;
  51. }
  52. int main()
  53. {
  54. int Error = 0;
  55. Error += test_vec();
  56. Error += test_mat();
  57. return Error;
  58. }
  59. #else
  60. int main()
  61. {
  62. return 0;
  63. }
  64. #endif//GLM_HAS_RANGE_FOR