Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. #pragma GCC push_options
  2. #pragma GCC optimize ("unroll-loops")
  3.  
  4. #define GLM_CONVERT_VEC(L, T, IN)\
  5. ({\
  6. __typeof__(IN) in = IN;\
  7. glm_vec(L, T) out;\
  8. for(size_t i = 0; i < L; ++i) out.data[i] = (T)in.data[i];\
  9. out;\
  10. })
  11.  
  12. #define GLM_CONVERT_TVEC1(T, IN) GLM_CONVERT_VEC(1, T, IN)
  13. #define GLM_CONVERT_TVEC2(T, IN) GLM_CONVERT_VEC(2, T, IN)
  14. #define GLM_CONVERT_TVEC3(T, IN) GLM_CONVERT_VEC(3, T, IN)
  15. #define GLM_CONVERT_TVEC4(T, IN) GLM_CONVERT_VEC(4, T, IN)
  16.  
  17.  
  18. int main(int argc, char** argv)
  19. {
  20. {
  21. /* Vector casting */
  22. glm_ivec4 v1 = {52, 0, 22, -24};
  23. glm_bvec2 v2;
  24.  
  25. v2 = GLM_CONVERT_TVEC2(bool, v1);
  26.  
  27. printf("bvec2(%d, %d)\n", v2.x, v2.y);
  28. }
  29.  
  30.  
  31. return 0;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement