Я проверил это с GLM 0.9.9 и GCC 7.4.0, и оно работает после переключения порядка умножения v
и m
.
glm::vec4 v = glm::vec4(0.0, 4.0, 0.0, 1.0f);
glm::vec3 valuesToTranslate(8.0, 0.0, 0.0);
glm::mat4 m = glm::translate(valuesToTranslate);
glm::vec4 res = m * v;
// expected output: vec(8.0, 4.0, 0.0, 1.0)
std::cout << glm::to_string(res) << std::endl;
Если вы все еще не получаетеожидаемые результаты в вашем собственном коде. Я бы посоветовал проверить входные значения, а в противном случае проверить, нет ли известных проблем с вашей версией GLM.