GLM 행렬(mat) 또는 벡터(vec) 출력하기

TL;DR

glm의 계산 결과를 확인하기 위해서 출력해야하는 경우가 있다. 이럴 때는 glm/gtx/string_cast.hpp을 인클루드 하고 glm::to_string 함수를 호출하면 된다.

Code

1
2
3
4
#include <glm/gtx/string_cast.hpp>

glm::mat4 mat;
std::cout << glm::to_string(mat) << std::endl;

Example

벡터 출력

1
2
3
4
5
6
glm::vec3 vector1(1.0f, 2.0f, 3.0f);
glm::vec3 vector2(4.0f, 5.0f, 6.0f);

glm::vec3 result_vec = vector1 + vector2;

std::cout << glm::to_string(result_vec) << std::endl;

결과

1
vec3(5.000000, 7.000000, 9.000000)

행렬 출력

1
2
glm::mat4 result_mat = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f, 2.0f, 3.0f));
std::cout << glm::to_string(result_mat) << std::endl;

결과

1
mat4x4((1.000000, 0.000000, 0.000000, 0.000000), (0.000000, 1.000000, 0.000000, 0.000000), (0.000000, 0.000000, 1.000000, 0.000000), (1.000000, 2.000000, 3.000000, 1.000000))

정리하면 다음과 같다.

1
2
3
4
(1.000000, 0.000000, 0.000000, 0.000000)
(0.000000, 1.000000, 0.000000, 0.000000)
(0.000000, 0.000000, 1.000000, 0.000000)
(1.000000, 2.000000, 3.000000, 1.000000)

glm은 열중심으로 출력되어 있는 것을 확인할 수 있다.

여담