Vollständige Mathematikbibliothek für den Einsatz in OpenGL ES 2.0? [geschlossen]


14

Kennen Sie eine vollständige (oder fast vollständige) plattformübergreifende Mathematikbibliothek zur Verwendung in OpenGL ES 2.0-Spielen?

Die Bibliothek sollte enthalten:

  • Klassen Matrix2x2, Matrix 3x3, Matrix4x4
  • Quaternionen
  • Klassen Vector2, Vector3, Vector4
  • Euler-Winkelklasse
  • Operationen unter den oben genannten Klassen, Umbauten usw ..
  • Standardmäßig verwendete mathematische Operationen in 3D-Grafiken (Punktprodukt, Kreuzprodukt, SLERP usw.)

Gibt es eine solche Math-API, die entweder eigenständig oder als Teil eines Pakets verfügbar ist ?

Programmiersprache: Visual C ++, soll jedoch auf OS X und Android portiert werden.



Derzeit gibt es keine perfekte Mathematikbibliothek. Ich habe nur versucht, einige Anforderungen zu schreiben, und keine Bibliothek hat sie. In der Realität möchte ich, dass jemand eine Bibliothek so einfach wie GLM macht, mit der gleichen Funktion wie Shader und dem Stil der Ogre-Mathematikbibliothek und einige seiner Funktionalitäten (das GLM fehlt wie Sichtstumpf, Begrenzungsrahmen usw.). Beachten Sie auch, dass GLM nicht so schnell ist (in Wirklichkeit spielt das keine Rolle), so dass ich bezweifle, dass jemand es in Raytracern oder intensivem Material verwenden wird nützlich wegen seiner API und Design-Stil
GameDeveloper

Antworten:


14

Haben Sie die konfigurierbare Mathematikbibliothek berücksichtigt ?


+1 @Josh: Danke für deinen guten Tipp. Ich erwäge derzeit GLM ( glm.g-truc.net ) GL Math Bibliothek. Ich werde abwarten, welche Bibliotheken die Leute schon ausprobiert haben und welche sich als gut erwiesen haben.
Bunkai.Satori

3
Ich kann GLM nur empfehlen. Ich benutze es und seine "awesome"
Brainydexter

+1, ich mag CML sehr und hätte das als Antwort gepostet =). Es hängt jedoch stark von den Optimierungen des Compilers ab, da er generisch und vorlagenbasiert ist. Wenn Sie ein Mobilgerät als Ziel angeben (wahrscheinlich, wie Sie ES angegeben haben), ist möglicherweise eine andere Mathematikbibliothek besser für das Ziel optimiert.
Jari Komppa

Hallo Brainy, Jari, danke für deine Kommentare. Ich würde immer noch gerne sehen, ob weitere Optionen mit Benutzer-Feedback verfügbar sind. Daher möchte ich diese Frage noch eine Weile offen halten.
Bunkai.Satori

@Jari - Was ist in der Diskussion über die Optimierung der Mathematikbibliothek für die OpenGL ES-Plattform enthalten? Ich meine, wenn die Formeln und Datentypen richtig entworfen wurden, was kann man sonst noch tun, um die Bibliothek für die ES-Plattform zu optimieren? (Es könnte eine elementare Frage sein, aber ich habe keine Antwort darauf.)
Bunkai.Satori

8

Eigen ist eine reine C ++ - Header-Mathematikbibliothek, die SSE-, AltiVec- und ARM-Neon-Vektorisierung unterstützt.


+1 für tollen Tipp. Hallo Simon, danke für deinen tollen Tipp. Ich habe angefangen, GLM (OpenGL Math Library) zu verwenden, und es ist ziemlich erstaunlich. Es enthält alles von Vektor-, Matrix-, Quaternion-Mathematik, SLERP-Interpotationen usw. Bis jetzt bietet es mehr, als ich wirklich brauche, also bin ich im Moment damit zufrieden.
Bunkai.Satori

6

+1 für gute Tipps. Hallo Maik, danke für deine Kommentare. Meiner Meinung nach könnte der zweite nützlich sein, insbesondere wenn das Spiel Bullet Physics integriert. Mein Spiel wird Bullet Physics verwenden, aber leider habe ich angefangen, GLM zu verwenden, also werde ich versuchen, mich an GLM zu halten.
Bunkai.Satori

4

Ich habe am Hinzufügen von Apples GLKMath zu diesem Test gearbeitet (tatsächlich gabelte diese Gabelung )

Hier ist das Ergebnis auf meinem iPod Touch der 4. Generation :

Eigen:
Additions: 77624 milliseconds.
Multiplications: 227179 milliseconds.

GLM:
Additions: 23935 milliseconds.
Multiplications: 80599 milliseconds.

CML:
Additions: 102390 milliseconds.
Multiplications: 161059 milliseconds.

GLKMath:
Additions: 8526 milliseconds.
Multiplications: 21775 milliseconds.

Hier ist mein Code

Ich habe kein Android-Gerät, bin aber gespannt, wie sich GLKMath auf Android verhält.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.