Przekroczyłem bardzo prosty błąd, gdy zacząłem używać glm (w VS2010). Mam ten krótki kod:glm translate matrix nie tłumaczy wektora
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;
Wynik transformedVector jest taka sama jak jego pierwotnej wartości (1.f, 1.f, 1.f, 0.f). Nie wiem, czego tu brakuje. Próbowałem macierzy obrotu i to działa poprawnie, punkt jest transformowany poprawnie.
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;
Ok, znalazłem problem. Chciałbym przetłumaczyć wierzchołek, a nie wektor, w tym przypadku musiałem ustawić wartość w na 1.