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.

61 lines
1.2 KiB

5 years ago
  1. #include <glm/ext/matrix_relational.hpp>
  2. #include <glm/ext/matrix_transform.hpp>
  3. #include <glm/ext/matrix_float4x4.hpp>
  4. #include <glm/ext/vector_relational.hpp>
  5. #include <glm/ext/vector_float4.hpp>
  6. #include <glm/ext/vector_float3.hpp>
  7. static int test_translate()
  8. {
  9. int Error = 0;
  10. glm::mat4 const M(1.0f);
  11. glm::vec3 const V(1.0f);
  12. glm::mat4 const T = glm::translate(M, V);
  13. Error += glm::all(glm::equal(T[3], glm::vec4(1.0f), glm::epsilon<float>())) ? 0 : 1;
  14. return Error;
  15. }
  16. static int test_scale()
  17. {
  18. int Error = 0;
  19. glm::mat4 const M(1.0f);
  20. glm::vec3 const V(2.0f);
  21. glm::mat4 const S = glm::scale(M, V);
  22. glm::mat4 const R = glm::mat4(
  23. glm::vec4(2, 0, 0, 0),
  24. glm::vec4(0, 2, 0, 0),
  25. glm::vec4(0, 0, 2, 0),
  26. glm::vec4(0, 0, 0, 1));
  27. Error += glm::all(glm::equal(S, R, glm::epsilon<float>())) ? 0 : 1;
  28. return Error;
  29. }
  30. static int test_rotate()
  31. {
  32. int Error = 0;
  33. glm::vec4 const A(1.0f, 0.0f, 0.0f, 1.0f);
  34. glm::mat4 const R = glm::rotate(glm::mat4(1.0f), glm::radians(90.f), glm::vec3(0, 0, 1));
  35. glm::vec4 const B = R * A;
  36. Error += glm::all(glm::equal(B, glm::vec4(0.0f, 1.0f, 0.0f, 1.0f), 0.0001f)) ? 0 : 1;
  37. return Error;
  38. }
  39. int main()
  40. {
  41. int Error = 0;
  42. Error += test_translate();
  43. Error += test_scale();
  44. Error += test_rotate();
  45. return Error;
  46. }