Я перешел очень простую ошибку, когда начал использовать glm (в VS2010). Я получил этот короткий код:glm translate matrix не переводит вектор
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;
Результат transformedVector такой же, как исходное значение (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.