Я пересек очень простую ошибку, когда начал использовать glm (в VS2010). У меня есть этот короткий код:
glm::mat4 translate = glm::translate(glm::mat4(1.f), glm::vec3(2.f, 0.f, 0.f));
glm::vec4 vector(1.f,1.f,1.f,0.f);
glm::vec4 transformedVector = translate * vector;
Результат преобразованного вектора совпадает с исходным значением (1.f, 1.f, 1.f, 0.f). Я не знаю, что мне здесь не хватает. Я попробовал матрицу вращения, и она работает нормально, точка трансформируется правильно.
glm::mat4 rotate = glm::rotate(glm::mat4(1.f), 90.f, glm::vec3(0.f, 0.f, 1.f));
glm::vec4 vector(1.f, 1.f, 1.f, 0.f);
glm::vec4 transformedVector = rotate * vector;
Хорошо, я обнаружил проблему. Я хотел бы перевести вершину, а не вектор, в этом случае мне пришлось установить значение w равным 1.