2017-05-12 5 views
0

Hier habe ich eine einfache OpenGL-Funktion implementieren wollen, die für glulookat() ähnelt:Opengl Precision Konvertierungsfehler Übersetzungsfehler 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 hat mir gesagt, dass:

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

I Ich weiß, dass dieses Problem durch eine Typkonvertierung verursacht werden kann. Nachdem ich jedoch alle 0.0 zu 0 geändert habe, treten ähnliche Probleme erneut auf (n o passender XXX von "int" bis XXX). Ich konnte nicht herausfinden, wie ich es lösen könnte. Gibt es irgendwelche Vorschläge?

+1

War es etwas falsch mit [ 'glm :: LookAt()'] (http://glm.g-truc.net/0.9 .8/api/a00169.html # gaf8eef81da1ad09f6a8920101c01eaae4) in ['GLM_GTC_matrix_transform'] (http://glm.g-truc.net/0.9.8/api/a00169.html)? – genpfault

+1

Ohne VS2017 zur Hand, aber '= (' sieht mir ziemlich komisch aus. Sollte es nicht 'mat4 r (...);' sein? – BDL

+0

Wich Opengl Version? – Rama

Antwort

1

Ihr Matrix-Deklarationscode enthält einen Syntaxfehler, ist falsch. Die richtige Syntax sollte sein:

mat4 r(...); 

(ohne = dazwischen)