Ни один оператор "*" не соответствует этим операндам
Это мой код
glm::vec3 v(4, -6, 7);
glm::vec3 twiceV = 2 * v;
Я включил GLM Stable и экспериментальные GLM расширения. Почему я не могу использовать int * vec
?
2 ответа
Это потому, что нет глобального перегруженного оператора формы
glm::vec3 operator*(int, const glm::vec3&)
Есть ли v * 2
работать случайно? (Для этого будет достаточно перегрузки оператора функции-члена.)
Или, может быть, даже 2f * v
, что тогда потребовало бы первый параметр перегруженного *
оператор быть float
?
2
является целым числом, в то время как элементы glm::vec3
являются поплавками. Попробуйте это вместо этого:
glm::vec3 twiceV = 2.0f * v;
Я бы также передал значения с плавающей точкой в конструктор (4.0f
), просто чтобы четко указать, что вы имеете дело с поплавками.
Кроме того, вы можете использовать целочисленный вектор glm::ivec3
:
glm::ivec3 v(4, -6, 7);
glm::ivec3 twiceV = 2 * v;
Конечно, целочисленный вектор будет содержать только целочисленные значения, которые могут не соответствовать вашим ожиданиям.