Libreria matematica completa da utilizzare nel gioco OpenGL ES 2.0? [chiuso]


14

Sei a conoscenza di una libreria matematica completa (o quasi completa) multipiattaforma da utilizzare nei giochi OpenGL ES 2.0?

La libreria dovrebbe contenere:

  • Classi Matrix2x2, Matrix 3x3, Matrix4x4
  • quaternions
  • Classi Vector2, Vector3, Vector4
  • Classe di angolo di Eulero
  • Operazioni tra le suddette classi, conversioni, ecc.
  • Operazioni matematiche utilizzate standard nella grafica 3D (Dot Product, Cross Product, SLERP, ecc ...)

Esiste un'API matematica disponibile o autonoma o come parte di qualsiasi pacchetto ?

Linguaggio di programmazione: Visual C ++ ma pianificato per il porting su OS X e sistema operativo Android.



Per il momento non esiste una libreria matematica perfetta, ho appena provato a scrivere pochi requisiti e non c'è nessuna libreria che li abbia, beh nella realtà vorrei che qualcuno rendesse una libreria facile come GLM con la stessa funzione degli shader + lo stile della libreria matematica Ogre e alcune delle sue funzionalità (che a GLM mancano come view frustum, bounding box ecc.) Notate anche che GLM non è così veloce (in realtà non importa) quindi dubito che qualcuno lo userà in raytracer o roba intensiva, è più utile a causa della sua API e stile di progettazione
GameDeveloper

Risposte:


14

Hai considerato la libreria matematica configurabile ?


+1 @Josh: Grazie per il tuo buon consiglio. Attualmente sto considerando GL GL ( glm.g-truc.net ) libreria di matematica GL. Aspetterò di vedere quali biblioteche le persone hanno già provato e si sono dimostrate valide.
Bunkai.Satori

3
Consiglio vivamente GLM. Lo uso ed è "fantastico"
brainydexter

+1, mi piace molto la LMC e l'avrei pubblicato come risposta =). Tuttavia, dipende molto dalle ottimizzazioni del compilatore, poiché è generico e basato su template. Se stai prendendo di mira un dispositivo mobile (probabilmente come hai citato ES), alcune altre librerie matematiche potrebbero essere ottimizzate meglio per il target.
Jari Komppa l'

Ciao Brainy, Jari, grazie per i tuoi commenti. Vorrei ancora vedere, se ci sono più opzioni con feedback degli utenti disponibili, quindi, vorrei mantenere aperta questa domanda per un po '.
Bunkai.Satori,

@Jari - quando si parla dell'ottimizzazione della libreria matematica per la piattaforma OpenGL ES, cosa è incluso? Voglio dire, se i tipi di formula e di dati sono progettati correttamente, cos'altro si può fare per ottimizzare la libreria per la piattaforma ES? (Potrebbe essere una domanda elementare, ma non ho una risposta per questo.)
Bunkai.Satori

8

Eigen è una libreria matematica solo intestazione C ++ che supporta la vettorializzazione SSE, AltiVec e ARM Neon.


+1 per un consiglio eccezionale. Ciao Simone, grazie per il tuo fantastico consiglio. Ho iniziato a usare GLM (OpenGL Math Library), ed è piuttosto sorprendente. Contiene tutto, dal vettore, alla matrice, alla matematica del quaternione, alle interpotazioni SLERP, ecc ... finora, offre più di quello di cui ho davvero bisogno, quindi per ora sono contento.
Bunkai.Satori,

6

+1 per buoni consigli. Ciao Maik, grazie per i tuoi commenti. Secondo me, il secondo potrebbe essere utile soprattutto quando il gioco integra Bullet Physics. Il mio gioco utilizzerà Bullet Physics, ma sfortunatamente, ho iniziato a utilizzare GLM, quindi cercherò di attenermi a GLM.
Bunkai.Satori,

4

Ho lavorato per aggiungere GLKMath di Apple a questo test (in realtà biforcuto questo fork )

Ecco il risultato sul mio iPod Touch di 4 generazione :

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.

Ecco il mio codice

Non ho un dispositivo Android, ma sono curioso di sapere come GLKMath si esibirà su Android.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.