2017-05-12 51 views
0

在這裏,我想實現一個簡單的OpenGL函數,它類似於glulookat()Opengl的精密轉換錯誤編譯錯誤E0415

mat4 Transform::lookAt(vec3 eye, vec3 up) { 
vec3 w = glm::normalize(eye); 
vec3 u = glm::normalize(glm::cross(up, w)); 
vec3 v = glm::cross(w, u); 
mat4 r = (
    u.x, u.y, u.z, 0, 
    v.x, v.y, v.z, 0, 
    w.x, w.y, w.z, 0, 
    0, 0, 0, 1 
    ); 

mat4 t = (
    1.0, 0.0, 0.0, -eye.x, 
    0.0, 1.0, 0.0, -eye.y, 
    0.0, 0.0, 1.0, -eye.z, 
    0.0, 0.0, 0.0, 1.0 
    ); 

mat4 result = glm::transpose(r)*glm::transpose(t); 
return result; 

}

VS2017對我說:

Error (active) E0415 no suitable constructor exists to convert from "double" to "glm::detail::tmat4x4<glm::core::type::precision::lowp_float>" 

我知道這個問題可能是由類型轉換引起的,但是,在我將所有0.0修改爲0後,再次出現類似問題(n o從"int"到XXX的合適XXX)。我無法弄清楚如何解決它。有什麼建議嗎?

+1

當時有什麼錯['GLM ::的lookAt()'](http://glm.g-truc.net/0.9 .8/api/a00169.html#gaf8eef81da1ad09f6a8920101c01eaae4)['GLM_GTC_matrix_transform'](http://glm.g-truc.net/0.9.8/api/a00169.html)? – genpfault

+1

沒有VS2017,但是'=('看起來對我來說很奇怪,不應該只是'mat4 r(...);'? – BDL

+0

Wich Opengl版本? – Rama

回答

1

矩陣聲明代碼中存在語法錯誤,mat4 r = (...) 錯誤。正確的語法應爲:

mat4 r(...); 

(無=插圖中)