Beste C ++ - Mathematikbibliothek für Game Engine? [geschlossen]

18

Ich suche eine schnelle OpenSource-C ++ - Mathematikbibliothek für meine Spiel-Engine mit den folgenden Funktionen:

  • schnell (sse?)
  • Vektoren
  • Matrizen
  • Quaternionen

geeignet für opengl und directx

Pragmaskript
quelle
1
Ich verstehe nicht, warum eine Mathematikbibliothek sowieso von einer Grafik-API abhängig wäre. : P
Die kommunistische Ente
3
afaik opengl verwendet Spaltenmatrizen und DirectX-Zeilenmatrizen. es wäre also schön, wenn die bibliothek beides unterstützen würde
pragmascript 18.03.11
1
In GL können Sie immer die transponierte Matrix festlegen, und in DX können Sie das Layout in den Shadern festlegen. Manuelles Einstellen ist auch keine große Sache.
Anteru
1
Die Plattform ist hier wichtig, da es ziemlich einfach ist, eine Mathematikbibliothek zu erstellen, die auf einem PC gut funktioniert, auf einer Konsole aber schrecklich ist oder umgekehrt.
Kylotan

Antworten:

11

XNA Math könnte für Sie sein. Es handelt sich um eine reine C ++ - Header-Mathematikbibliothek, die mit dem neuesten DirectX SDK ausgeliefert wird und SSE-Eigenheiten verwendet. Ich kann nicht viel über seine Leistung sprechen, aber nach allem, was ich darüber gelesen habe, scheint es ziemlich anständig zu sein.

XNA Math Reference

XNA Math Programmieranleitung

DX SDK herunterladen

EDIT: Ich bin mir auch nicht sicher über die Lizenzbedingungen. Das DX SDK Eula gibt an, dass "Distributable Code" möglicherweise nicht "Distributable Code" ist

"Auf einer anderen Plattform als den Plattformen Windows, Xbox und Windows Mobile ausführen."

Ich bin mir nicht ganz sicher, ob dies für xna math gilt, da nur der Beispiel- und Utility-Code explizit als "Distributable Code" gekennzeichnet ist.

Koarl
quelle
Ich habe überhaupt keine Ahnung von den Lizenzbestimmungen von XNA. Ist es beispielsweise in Ordnung, sie in Betriebssystemen zu verwenden, die nicht von Microsoft stammen? Trotzdem habe ich in einem Software-Rendering-Projekt die mathematische Bibliothek d3dx verwendet (was ziemlich genau dasselbe ist), sodass sie in keiner Weise von DirectX abhängig ist.
Jari Komppa
1
Klarstellung: d3dx math ist in Bezug auf die Lizenzierung wahrscheinlich ziemlich dasselbe - was die Implementierung betrifft, ist es jedoch anders. Laut SDK-Dokumentation basiert d3dx math in hohem Maße auf Inlining und Übergabe per Zeiger, während xnamath auf SIMD und Intrinsics basiert.
Koarl
14

Wir verwenden OpenGL Mathematics

Obwohl der Name impliziert, dass es nur für OpenGL ist, sehe ich keinen Grund, warum es für DirectX nicht funktionieren würde. Es ist eine reine Header-Bibliothek, einfach zu bedienen und wird sehr aktiv aktualisiert.

Hör zu.

Kyle C
quelle
2
verwendet MIT-Lizenz
Jari Komppa
4

Vielleicht CML http://www.cmldev.net/

Piotrek
quelle
1
Software-Lizenz steigern.
Jari Komppa
1

Die im Rahmen von Bullet Physics verwendete Vektormath-Bibliothek von Sony erfüllt alle Ihre Anforderungen. Einige Arbeiten sind erforderlich, um es von Bullet zu trennen, aber nichts Ernstes - es hängt nicht von Bullet ab, nur dass niemand es offiziell getrennt davon verpackt hat.

Die derzeit im Bullet Tree enthaltene Version unterstützt SSE-Optimierungen und verfügt über eine C ++ - Schnittstelle.

Eine ältere Version (wahrscheinlich jetzt nicht unterstützt) unterstützt auch SOA-Formate und eine reine C-Schnittstelle.

user744
quelle
1
Scheint wie zlib / libpng Lizenz.
Jari Komppa
Das interessiert mich. Sie haben erwähnt, dass einige Arbeiten im Zusammenhang mit der Trennung stehen. Haben Sie Links oder andere Informationen darüber, welche Art von Arbeit damit verbunden ist?
0

Oder aus Gründen der Geschwindigkeit http://sourceforge.net/projects/simdx86/ .

ChrisE
quelle
3
LGPL, also ist es ziemlich nutzlos. Eine Mathematikbibliothek ist als Inline-Bibliothek gedacht, daher wird Ihr Projekt auch sozusagen zur (L) GPL.
Jari Komppa