Kompletna biblioteka matematyczna do użytku w grze OpenGL ES 2.0? [Zamknięte]

14

Czy znasz kompletną (lub prawie kompletną) bibliotekę matematyczną dla wielu platform do użytku w grach OpenGL ES 2.0?

Biblioteka powinna zawierać:

  • Klasy Matrix2x2, Matrix 3x3, Matrix4x4
  • Czwartorzędy
  • Klasy Vector2, Vector3, Vector4
  • Klasa kąta Eulera
  • Operacje między wyżej wymienionymi klasami, konwersje itp.
  • Standardowo używane operacje matematyczne w grafice 3D (produkt punktowy, produkt krzyżowy, SLERP itp.)

Czy takie matematyczne API jest dostępne jako samodzielne lub jako część dowolnego pakietu ?

Język programowania: Visual C ++, ale planowany do przeniesienia na OS X i Android OS.

Bunkai.Satori
źródło
Na razie nie ma idealnej biblioteki matematycznej, po prostu próbowałem napisać kilka wymagań i po prostu żadna biblioteka ich nie ma, w rzeczywistości chciałbym, żeby ktoś uczynił bibliotekę łatwą jak GLM z taką samą funkcją jak shadery + styl biblioteki matematycznej Ogre i niektóre z jego funkcji (że GLM jest jak missin frustum widoku, ramki ograniczające itp.) Należy również pamiętać, że GLM nie jest tak szybki (w rzeczywistości to nie ma znaczenia), więc wątpię, czy ktoś użyje go w raytracerach lub intensywnych rzeczach, jest więcej przydatne ze względu na interfejs API i styl projektowania
GameDeveloper

Odpowiedzi:

14

Czy zastanawiałeś się nad konfigurowalną biblioteką matematyczną ?

użytkownik 1430
źródło
+1 @Josh: Dzięki za dobrą wskazówkę. Obecnie rozważam bibliotekę GL Math GLM ( glm.g-truc.net ). Zaczekam, aby zobaczyć, jakie biblioteki ludzie już próbowali i udowodnili, że są dobre.
Bunkai.Satori
3
Zdecydowanie polecam GLM. Używam go i jego „niesamowitego”
brainydexter
+1, bardzo lubię CML i opublikowałbym to jako odpowiedź =). Zależy to jednak od optymalizacji kompilatora, ponieważ jest on oparty na standardach i szablonach. Jeśli celujesz w urządzenie mobilne (prawdopodobnie jak cytowałeś ES), niektóre inne biblioteki matematyczne mogą być lepiej zoptymalizowane pod kątem celu.
Jari Komppa
Cześć Brainy, Jari, dziękuję za komentarze. Wciąż chciałbym zobaczyć, czy dostępnych jest więcej opcji z opiniami użytkowników, dlatego chcę na chwilę pozostawić to pytanie otwarte.
Bunkai.Satori
@Jari - co jest uwzględnione podczas omawiania optymalizacji biblioteki matematycznej dla platformy OpenGL ES? Mam na myśli to, że jeśli formuła i typy danych są odpowiednio zaprojektowane, co jeszcze można zrobić, aby zoptymalizować bibliotekę na platformę ES? (To może być podstawowe pytanie, ale nie mam na to odpowiedzi).
Bunkai.Satori
8

Eigen to biblioteka matematyczna zawierająca tylko nagłówki C ++, która obsługuje wektoryzację SSE, AltiVec i ARM Neon.

Simon Lacey
źródło
+1 za świetną wskazówkę. Cześć Simon, dziękuję za twoją świetną wskazówkę. Zacząłem używać GLM (OpenGL Math Library) i jest to całkiem niesamowite. Zawiera wszystko od wektora, macierzy, matematyki czwartorzędu, interpotacji SLERP itp. Do tej pory oferuje więcej niż naprawdę potrzebuję, więc jestem z tego zadowolony.
Bunkai.Satori
6

Oto 2:

  1. Vectormath Sony
  2. Bullet's Linearmath
Maik Semder
źródło
+1 za dobre wskazówki. Cześć Maik, dziękuję za komentarze. Moim zdaniem drugi może być przydatny, zwłaszcza gdy gra integruje się z Bullet Physics. Moja gra będzie korzystać z Bullet Physics, ale niestety zacząłem używać GLM, więc postaram się trzymać GLM.
Bunkai.Satori
4

Pracowałem nad dodaniem GLKMath firmy Apple do tego testu (faktycznie rozwidliłem ten widelec )

Oto wynik mojego iPoda Touch 4 generacji :

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.

Oto mój kod

Nie mam urządzenia z Androidem, ale jestem ciekawy, jak GLKMath będzie działać na Androidzie.

obrotami
źródło