ext_vector_packing.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include <glm/ext/vector_packing.hpp>
  2. #include <glm/ext/vector_relational.hpp>
  3. #include <glm/ext/vector_uint2_sized.hpp>
  4. #include <glm/ext/vector_int2_sized.hpp>
  5. #include <glm/gtc/packing.hpp>
  6. #include <glm/vec2.hpp>
  7. #include <vector>
  8. int test_packUnorm()
  9. {
  10. int Error = 0;
  11. std::vector<glm::vec2> A;
  12. A.push_back(glm::vec2(1.0f, 0.7f));
  13. A.push_back(glm::vec2(0.5f, 0.1f));
  14. for (std::size_t i = 0; i < A.size(); ++i)
  15. {
  16. glm::vec2 B(A[i]);
  17. glm::u16vec2 C = glm::packUnorm<glm::uint16>(B);
  18. glm::vec2 D = glm::unpackUnorm<float>(C);
  19. Error += glm::all(glm::equal(B, D, 1.0f / 255.f)) ? 0 : 1;
  20. assert(!Error);
  21. }
  22. return Error;
  23. }
  24. int test_packSnorm()
  25. {
  26. int Error = 0;
  27. std::vector<glm::vec2> A;
  28. A.push_back(glm::vec2(1.0f, 0.0f));
  29. A.push_back(glm::vec2(-0.5f, -0.7f));
  30. A.push_back(glm::vec2(-0.1f, 0.1f));
  31. for (std::size_t i = 0; i < A.size(); ++i)
  32. {
  33. glm::vec2 B(A[i]);
  34. glm::i16vec2 C = glm::packSnorm<glm::int16>(B);
  35. glm::vec2 D = glm::unpackSnorm<float>(C);
  36. Error += glm::all(glm::equal(B, D, 1.0f / 32767.0f * 2.0f)) ? 0 : 1;
  37. assert(!Error);
  38. }
  39. return Error;
  40. }
  41. int main()
  42. {
  43. int Error = 0;
  44. Error += test_packUnorm();
  45. Error += test_packSnorm();
  46. return Error;
  47. }