core_func_swizzle.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #define GLM_FORCE_MESSAGES
  2. #define GLM_FORCE_SWIZZLE
  3. #include <glm/glm.hpp>
  4. static int test_ivec2_swizzle()
  5. {
  6. int Error = 0;
  7. #if GLM_SWIZZLE == GLM_ENABLE
  8. glm::ivec2 A(1, 2);
  9. glm::ivec2 B = A.yx();
  10. glm::ivec2 C = B.yx();
  11. Error += A != B ? 0 : 1;
  12. Error += A == C ? 0 : 1;
  13. #endif//GLM_SWIZZLE == GLM_ENABLE
  14. return Error;
  15. }
  16. int test_ivec3_swizzle()
  17. {
  18. int Error = 0;
  19. #if GLM_SWIZZLE == GLM_ENABLE
  20. glm::ivec3 A(1, 2, 3);
  21. glm::ivec3 B = A.zyx();
  22. glm::ivec3 C = B.zyx();
  23. Error += A != B ? 0 : 1;
  24. Error += A == C ? 0 : 1;
  25. #endif//GLM_SWIZZLE == GLM_ENABLE
  26. return Error;
  27. }
  28. int test_ivec4_swizzle()
  29. {
  30. int Error = 0;
  31. #if GLM_SWIZZLE == GLM_ENABLE
  32. glm::ivec4 A(1, 2, 3, 4);
  33. glm::ivec4 B = A.wzyx();
  34. glm::ivec4 C = B.wzyx();
  35. Error += A != B ? 0 : 1;
  36. Error += A == C ? 0 : 1;
  37. #endif//GLM_SWIZZLE == GLM_ENABLE
  38. return Error;
  39. }
  40. int test_vec4_swizzle()
  41. {
  42. int Error = 0;
  43. #if GLM_SWIZZLE == GLM_ENABLE
  44. glm::vec4 A(1, 2, 3, 4);
  45. glm::vec4 B = A.wzyx();
  46. glm::vec4 C = B.wzyx();
  47. Error += A != B ? 0 : 1;
  48. Error += A == C ? 0 : 1;
  49. float f = glm::dot(C.wzyx(), C.xyzw());
  50. Error += glm::abs(f - 20.f) < 0.01f ? 0 : 1;
  51. #endif//GLM_SWIZZLE == GLM_ENABLE
  52. return Error;
  53. }
  54. int main()
  55. {
  56. int Error = 0;
  57. Error += test_ivec2_swizzle();
  58. Error += test_ivec3_swizzle();
  59. Error += test_ivec4_swizzle();
  60. Error += test_vec4_swizzle();
  61. return Error;
  62. }