Dies ist eine Go-Matrix- und Vektormathematikbibliothek, die auf Open GL-Grafikfunktionen spezialisiert ist.
Dieses Paket besteht hauptsächlich aus der Codegenerierung für die grundlegenden Vektor- und Matrixoperationen, die darüber hinausgehende Funktionalität ist jedoch handgeschrieben.
Vektoren und Matrizen werden wie OpenGL in Column Major Order gespeichert, was bedeutet, dass das Argument „transpose“ falsch sein sollte, wenn Vektoren und Matrizen mit diesem Paket übergeben werden.
Dieses Paket ist in zwei Unterpakete aufgeteilt. Das Paket mgl32
befasst sich mit 32-Bit-Floats und mgl64
mit 64-Bit-Floats. Im Allgemeinen verwenden Sie die 32-Bit-Version mit OpenGL, aber die 64-Bit-Version ist verfügbar, falls Sie die doppelte Erweiterung verwenden oder einfach präzisere 3D-Mathematik ohne OpenGL durchführen möchten.
Das alte Repository vor der Aufteilung zwischen den 32-Bit- und 64-Bit-Unterpaketen wird unter github.com/Jragonmiris/mathgl (dem alten Repository-Pfad) aufbewahrt, wird aber nicht mehr gepflegt.
Beispiele finden Sie unter github.com/go-gl/example.
Sie verwenden wahrscheinlich eine Kombination aus go get
und einer alten Go-Version. Das Dienstprogramm go get
ist so programmiert, dass es nach Tags sucht, die mit der aktuellen Go-Version übereinstimmen. Derzeit gibt es beispielsweise einen Tag für Go1.2.2. Wenn Sie also nicht auf Go1.3 aktualisiert haben, greift go get
auf eine ältere API zu. Weitere Informationen zum Versions-Tagging finden Sie im Abschnitt „API-Änderungen“.
Sie können jederzeit Pull-Requests für Funktionen und Fehlerbehebungen einreichen. Beachten Sie, dass abgesehen von Dokumentationsfehlern, Meta-Korrekturen (travis.yml usw.), Beispielcode und äußerst trivialen Änderungen (grundlegende Zugriffsfunktionen) Pull-Anfragen nicht ohne Tests akzeptiert werden, die dem neuen Code entsprechen. Wenn es sich um eine Fehlerbehebung handelt, sollte der Test den Fehler testen.
mgl64
wird direkt aus der 32-Bit-Version generiert. Um Ihre Änderungen widerzuspiegeln, führen go generate github.com/go-gl/mathgl/mgl32
aus (oder go generate
einfach im mgl32
-Verzeichnis). Beachten Sie außerdem, dass keine Änderungen direkt an diesen Dateien vorgenommen werden sollten, da die Codegenerierung in matrix.go
und vector.go
verwendet wird. Bearbeiten Sie matrix.tmpl
oder vector.tmpl
und führen Sie „go generic“ aus.
Von nun an werden keine größeren API-Breaking-Änderungen zwischen Go-Versionsveröffentlichungen mehr vorgenommen. Das heißt, jedes Mal, wenn ein „x“ in Go1.xx zunimmt. Ausnahmen gibt es natürlich für Fehlerbehebungen. Wenn eine Fehlerbehebung eine Änderung der Semantik der aufrufenden Software erfordert, wird diese geändert. (Ein Beispiel ist das kürzliche Update von Transpose, bei dem fälschlicherweise Row-Major-Regeln verwendet wurden.) Veraltete Funktionen können bei der Veröffentlichung der Hauptversion ebenfalls deaktiviert werden. Vor allen API-Breaking-Änderungen in der Nähe von Hauptversionen wird der neueste nicht-Breaking-Commit mit der vorherigen Go-Versionsnummer (z. B. Go1.2.2) gekennzeichnet. Wenn kein solches Tag vorhanden ist, kann man davon ausgehen, dass nichts kaputt ist.
Entfernung von EulerToQuat; Verwenden Sie stattdessen AnglesToQuat mit der Reihenfolge ZYX.