Tôi đã vượt qua một số lỗi rất đơn giản khi bắt đầu sử dụng glm (trong VS2010). Tôi đã có mã ngắn này:ma trận dịch ma trận không dịch vector
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;
Kết quả của biến đổiVector giống với giá trị ban đầu của nó (1.f, 1.f, 1.f, 0.f). Tôi không biết tôi đang thiếu gì ở đây. Tôi đã thử ma trận xoay và đang hoạt động tốt, điểm được chuyển đổi chính xác.
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, tôi đã phát hiện ra sự cố. Tôi muốn dịch một đỉnh không phải là vec-tơ, trong trường hợp này tôi phải đặt giá trị w thành 1.