본문으로 바로가기

glm 10,10,10,2 패킹

category 블로그 (Blog)/개발로그 (Devlogs) 2025. 3. 25. 14:47

glm에도 packer가 있었네.. 이런..

아래 코드는 3개의 float 변수를 10, 10, 10, 2 비트 패킹을 하여 하나의 uint32_t 변수에 담는 예제..

glm::vec3 p0 = glm::vec3(coords[0][0], coords[0][1], coords[0][2]);
glm::vec3 p1 = glm::vec3(coords[1][0], coords[1][1], coords[1][2]);
glm::vec3 p2 = glm::vec3(coords[2][0], coords[2][1], coords[2][2]);
glm::vec3 normal = GetNormal(p0, p1, p2);

glm::vec4 a = glm::vec4(normal[0], normal[1], normal[2], 0);
unsigned int packed = glm::packSnorm3x10_1x2(a);
qDebug() << packed;
glm::vec4 unpacked = glm::unpackSnorm3x10_1x2(packed);
qDebug() << unpacked[0] << unpacked [1] << unpacked [2];