Meilleure bibliothèque mathématique C ++ pour Game Engine? [fermé]

18

Je recherche une bibliothèque mathématique C ++ open source rapide pour mon moteur de jeu avec les fonctionnalités suivantes:

  • rapide (sse?)
  • vecteurs
  • matrices
  • quaternions

adapté à la fois opengl et directx

pragmascript
la source
1
Je ne vois pas pourquoi une bibliothèque mathématique dépendrait de toute façon d'une API graphique. : P
The Communist Duck
3
afaik opengl utilise des matrices de colonnes majeures et des lignes directes de lignes majeures. donc ce serait bien si la bibliothèque supportait les deux
pragmascript
1
Dans GL, vous pouvez toujours définir la matrice transposée et dans DX, vous pouvez spécifier la disposition dans les shaders. L'ajustement manuel n'est pas non plus un gros problème.
Anteru
1
La plate-forme est importante ici, car il est assez facile de créer une bibliothèque de mathématiques qui fonctionne très bien sur un PC mais horrible sur une console, ou vice versa.
Kylotan

Réponses:

11

XNA Math pourrait être pour vous. Il s'agit d'une bibliothèque mathématique C ++ uniquement en-tête qui est distribuée avec le dernier SDK DirectX et utilise les intrinsèques SSE. Je ne peux pas parler beaucoup de ses performances mais d'après ce que j'ai lu à ce sujet, il semble être assez décent.

Référence mathématique XNA

Guide de programmation XNA Math

Téléchargement du SDK DX

EDIT: Je ne suis pas sûr non plus des conditions de licence. Le DX SDK Eula indique que le «Code distribuable» peut ne pas être

"exécuté sur une plate-forme autre que les plates-formes Windows, Xbox et Windows Mobile;"

Je ne suis pas tout à fait sûr de savoir si cela s'applique aux mathématiques xna, car seul le code exemple et utilitaire est explicitement marqué comme "Code distribuable"

Koarl
la source
Je n'ai aucune idée des conditions de licence de XNA, par exemple, est-il acceptable de les utiliser dans des systèmes d'exploitation non Microsoft, par exemple. Cela dit, j'ai utilisé la bibliothèque mathématique d3dx (qui est à peu près la même chose) dans un projet de rendu logiciel à un moment donné, donc cela ne dépend en aucun cas de Directx.
Jari Komppa
1
Clarification: d3dx math est probablement à peu près la même chose en termes de licence - en ce qui concerne l'implémentation, c'est différent. Selon la documentation du SDK, les mathématiques d3dx s'appuient fortement sur l'inlining et le passage par le pointeur tandis que xnamath s'appuie sur SIMD et intrinsèques.
Koarl
14

Nous utilisons OpenGL Mathematics

Même si le nom implique que c'est juste pour OpenGL, je ne vois aucune raison pour que cela ne fonctionne pas pour DirectX. C'est une bibliothèque d'en-tête uniquement, facile à utiliser et très activement mise à jour.

Vérifiez-le.

Kyle C
la source
2
utilise la licence MIT
Jari Komppa
5

Essayez Eigen - modèles d'expression rapides, vectorisés, faciles à utiliser et sous licence MPL2

Anteru
la source
4

Peut-être CML http://www.cmldev.net/

piotrek
la source
1
Boostez la licence du logiciel.
Jari Komppa
1

La bibliothèque vectormath de Sony, utilisée dans le cadre de Bullet Physics , répond à toutes vos exigences. Un certain travail est impliqué pour le séparer de Bullet, mais rien de grave - cela ne dépend pas de bullet, juste que personne ne l'a jamais emballé officiellement à part.

La version actuellement dans l'arborescence des puces prend en charge les optimisations SSE et possède une interface C ++.

Une ancienne version (probablement non prise en charge) prend également en charge les formats SOA et une interface C pure.

user744
la source
1
On dirait la licence zlib / libpng.
Jari Komppa
Ça m'intéresse. Vous avez mentionné que certains travaux impliquaient la séparation, avez-vous des liens ou d'autres informations sur le type de travail que cela implique?
0

Ou, pour la vitesse, http://sourceforge.net/projects/simdx86/ .

ChrisE
la source
3
LGPL, donc c'est assez inutile. Une bibliothèque mathématique est censée être intégrée, donc cela force à peu près votre projet à être (L) GPL aussi.
Jari Komppa