2017-05-12 45 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(...); 

(无=插图中)