Ответ 1
glm::vec4
представляется как вектор-столбец. Поэтому правильная форма:
glm::vec4 result = m * v;
(обратите внимание на порядок операндов)
У меня есть матрица преобразования m
и вектор v
. Я хочу сделать линейное преобразование вектора, используя матрицу. Я ожидаю, что смогу сделать что-то вроде этого:
glm::mat4 m(1.0);
glm::vec4 v(1.0);
glm::vec4 result = v * m;
Это, похоже, не работает. Каков правильный способ выполнения такого рода операций в GLM?
Просто обратите внимание на тех, кто сталкивается с подобной проблемой. GLM требует, чтобы все операнды использовали один и тот же тип. Не пытайтесь умножить dvec4
на mat4
и ожидать, что он будет работать, вам понадобится vec4
.
glm::vec4
представляется как вектор-столбец. Поэтому правильная форма:
glm::vec4 result = m * v;
(обратите внимание на порядок операндов)
Поскольку GLM предназначен для имитации GLSL и предназначен для работы с OpenGL, его матрицы являются основными. И если у вас есть матрица с столбцом, вы усеиваете ее с помощью вектора.
Так же, как вы должны делать в GLSL (если вы не перенесали матрицу при загрузке).