Bibliothèque mathématique complète à utiliser dans le jeu OpenGL ES 2.0? [fermé]

14

Connaissez-vous une bibliothèque mathématique multiplateforme complète (ou presque complète) à utiliser dans les jeux OpenGL ES 2.0?

La bibliothèque doit contenir:

  • Matrix2x2, Matrix 3x3, Matrix4x4 classes
  • Quaternions
  • Classes Vector2, Vector3, Vector4
  • Classe d'angle d'Euler
  • Opérations parmi les classes, conversions, etc. mentionnées ci-dessus.
  • Opérations mathématiques couramment utilisées dans les graphiques 3D (produit scalaire, produit croisé, SLERP, etc ...)

Existe-t-il une telle API Math, autonome ou faisant partie d'un package ?

Langage de programmation: Visual C ++ mais prévu pour être porté sur OS X et Android OS.

Bunkai.Satori
la source
Il n'y a pas de bibliothèque mathématique parfaite pour l'instant, j'ai juste essayé d'écrire quelques exigences et juste aucune bibliothèque n'en a, eh bien dans la réalité j'aimerais que quelqu'un fasse une bibliothèque facile comme GLM avec la même fonction que les shaders + le style de la bibliothèque mathématique Ogre et certaines de ses fonctionnalités (que GLM est missin comme vue tronc de cercle, boîtes englobantes, etc.) Notez également que GLM n'est pas si rapide (en réalité, cela n'a pas d'importance), donc je doute que quelqu'un l'utilise dans les raytracers ou les trucs intensifs, est plus utile en raison de son API et de son style de conception
GameDeveloper

Réponses:

14

Avez-vous pensé à la bibliothèque mathématique configurable ?

user1430
la source
+1 @Josh: Merci pour votre bon conseil. J'envisage actuellement la bibliothèque GL Math GLM ( glm.g-truc.net ). J'attendrai de voir quelles bibliothèques les gens ont déjà essayées et qui ont fait leurs preuves.
Bunkai.Satori
3
Je recommande fortement GLM. Je l'utilise et son "génial"
brainydexter
+1, j'aime beaucoup CML et j'aurais posté ça comme réponse =). Cependant, cela dépend beaucoup des optimisations du compilateur, car il est générique et basé sur un modèle. Si vous ciblez un appareil mobile (probablement comme vous l'avez cité ES), une autre bibliothèque mathématique pourrait être mieux optimisée pour la cible.
Jari Komppa
Salut Brainy, Jari, merci pour vos commentaires. J'aimerais toujours voir, s'il y a plus d'options avec les commentaires des utilisateurs disponibles, par conséquent, je souhaite garder cette question ouverte pendant un certain temps.
Bunkai.Satori
@Jari - lors de la discussion sur l'optimisation des bibliothèques mathématiques pour la plate-forme OpenGL ES, qu'est-ce qui est inclus? Je veux dire, si la formule et les types de données sont correctement conçus, que peut-on faire d'autre pour optimiser la bibliothèque pour la plate-forme ES? (Ce pourrait être une question élémentaire, mais je n'ai pas de réponse à cela.)
Bunkai.Satori
8

Eigen est une bibliothèque mathématique en en-tête C ++ uniquement qui prend en charge la vectorisation SSE, AltiVec et ARM Neon.

Simon Lacey
la source
+1 pour un excellent conseil. Salut Simon, merci pour ton excellent conseil. J'ai commencé à utiliser GLM (OpenGL Math Library), et c'est assez étonnant. Il contient tout, du vecteur, de la matrice, des mathématiques du quaternion, des interpotations SLERP, etc ... jusqu'à présent, il offre plus que ce dont j'ai vraiment besoin, donc je suis content pour l'instant.
Bunkai.Satori
6

En voici 2:

  1. La vectormath de Sony
  2. Bullet's Linearmath
Maik Semder
la source
+1 pour de bons conseils. Salut Maik, merci pour vos commentaires. À mon avis, le second pourrait être utile surtout lorsque le jeu intègre Bullet Physics. Mon jeu va utiliser Bullet Physics, mais malheureusement, j'ai commencé à utiliser GLM, donc je vais essayer de m'en tenir à GLM.
Bunkai.Satori
4

J'ai travaillé sur l'ajout de GLKMath d'Apple à ce test (en fait fourchu cette fourchette )

Voici le résultat sur mon iPod Touch 4 génération :

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.

Voici mon code

Je n'ai pas d'appareil Android, mais je suis curieux de savoir comment GLKMath fonctionnera sur Android.

chunkyguy
la source