2017-02-03 57 views
0

這是我的代碼無操作「*」這些操作數

glm::vec3 v(4, -6, 7); 

glm::vec3 twiceV = 2 * v; 

我已經包括GLM穩定和實驗GLM擴展匹配。 爲什麼我不能使用int * vec

+0

是否有一個免費的函數提供支持glm 2 * v?嘗試v * 2,所以你實際上在vec3上調用operator *。 – carthurs

+1

'基礎知識'標籤與此有什麼關係? – molbdnilo

回答

2

2是一個整數,而glm::vec3的元素是浮點數。試試這個:

glm::vec3 twiceV = 2.0f * v; 

我也將通過浮點值構造函數(4.0f),只是爲了明確你正在處理的浮動。

或者,您也可以使用一個整數向量glm::ivec3

glm::ivec3 v(4, -6, 7); 
glm::ivec3 twiceV = 2 * v; 

當然,整向量僅保留整數,你想要什麼這可能不是。

+0

非常感謝! – Morovo

2

這是因爲形式

glm::vec3 operator*(int, const glm::vec3&)

任何機會是否v * 2工作沒有全局重載操作? (A成員函數操作過載就足夠了點。)

或者甚至2f * v,然後這將需要重載*操作者的第一個參數是一個float

+0

2f * v的作品,謝謝 – Morovo

相關問題