это мой кодНет Оператор «*» соответствует этим операнды
glm::vec3 v(4, -6, 7);
glm::vec3 twiceV = 2 * v;
Я включил GLM Стабильные и экспериментальные расширения GLM. Почему я не могу использовать int * vec
?
это мой кодНет Оператор «*» соответствует этим операнды
glm::vec3 v(4, -6, 7);
glm::vec3 twiceV = 2 * v;
Я включил GLM Стабильные и экспериментальные расширения GLM. Почему я не могу использовать int * vec
?
2
- целое число, а элементы glm::vec3
- это поплавки. Попробуйте вместо этого:
glm::vec3 twiceV = 2.0f * v;
Я хотел бы также передать значения с плавающей запятой в конструктор (4.0f
), просто чтобы сделать это четко указано, что вы имеете дело с поплавками.
В качестве альтернативы, вы можете использовать целочисленный вектор glm::ivec3
:
glm::ivec3 v(4, -6, 7);
glm::ivec3 twiceV = 2 * v;
Конечно, целочисленный вектор будет содержать только целые значения, которые не могли бы быть то, что вы хотите.
Спасибо вам большое! – Morovo
Это происходит потому, что не существует глобального перегружен оператор вида
glm::vec3 operator*(int, const glm::vec3&)
делает v * 2
работу случайно? (Перегрузка оператора функция-члена будет достаточно для этого.)
или, возможно, даже 2f * v
, который затем требует первого параметра перегруженного оператора *
быть float
?
2f * v работает, спасибо – Morovo
Есть ли бесплатная функция, обеспечивающая поддержку 2 * v в glm? Попробуйте v * 2, поэтому вы фактически вызываете оператор * на vec3. – carthurs
Что имеет отношение к этому тегу «основы-ts»? – molbdnilo