Ich rendere einen Kegel, und ich möchte ihn um 90 Grad gegen den Uhrzeigersinn drehen, so dass das spitze Ende nach Westen zeigt! Ich benutze OpenGL 3 +.
Hier ist mein Code in meiner Cone.cpp soweit:
%Vor%Nicht der gesamte Code wird angezeigt.
Kann mich jemand durch die Rotation führen? Ich muss die View-Matrix richtig multiplizieren? mit "Glm drehen" -Funktion?
Sie müssen Ihre Modellmatrix multiplizieren. Denn dort sollten Modellposition, Skalierung und Rotation liegen (deshalb heißt es Modellmatrix).
Alles, was Sie tun müssen, ist:
%Vor%Dies nimmt die Modellmatrix und wendet eine Rotation auf alle bereits vorhandenen Operationen an. Die anderen Funktionen übersetzen und skalieren das Gleiche. Auf diese Weise ist es möglich, viele Transformationen in einer einzigen Matrix zu kombinieren.
Ich habe festgestellt, dass Sie auch Fehler erhalten können, wenn Sie die Winkel nicht korrekt angeben, selbst wenn Sie glm::rotate(Model, angle_in_degrees, glm::vec3(x, y, z))
verwenden, könnten Sie dennoch Probleme bekommen. Der Fix, den ich dafür gefunden habe, war, den Typ als glm::rotate(Model, (glm::mediump_float)90, glm::vec3(x, y, z))
anzugeben, anstatt nur glm::rotate(Model, 90, glm::vec3(x, y, z))
Oder schreibe einfach das zweite Argument, den Winkel im Bogenmaß (zuvor in Grad), wie ein Float ohne Besetzung, wie in:
%Vor%Sie können glm :: radians () hinzufügen, wenn Sie Grad beibehalten möchten. Und fügen Sie die Includes hinzu:
%Vor%