Opengl 精度转换错误编译错误 E0415

Opengl Precision Conversion Error compiling error E0415

本文关键字:错误 编译 E0415 转换 精度 Opengl      更新时间:2023-10-16

在这里,我想实现一个简单的OpenGL函数,类似于glulookat()

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 后,类似的问题再次出现(从 "int" 到 XXX 没有合适的 XXX(。我不知道如何解决它。有什么建议吗?

矩阵声明代码中存在语法错误,mat4 r = (...)是错误的。正确的语法应该是:

mat4 r(...);

(没有 = 介于两者之间(