¿La mejor biblioteca matemática de C ++ para Game Engine? [cerrado]

18

Estoy buscando una biblioteca matemática C ++ de código abierto rápida para mi motor de juego con las siguientes características:

  • rápido (sse?)
  • vectores
  • matrices
  • cuaterniones

Adecuado para opengl y directx

pragmascript
fuente
1
No veo por qué una biblioteca matemática dependería de una API de gráficos de todos modos. : P
El pato comunista
3
afaik opengl usa matrices de columnas principales y directx row major. por lo que sería bueno que la biblioteca apoya tanto
pragmascript
1
En GL, siempre puede establecer la matriz transpuesta, y en DX, puede especificar el diseño en los sombreadores. El ajuste manual tampoco es gran cosa.
Anteru
1
La plataforma es importante aquí, porque es bastante fácil hacer una biblioteca matemática que funcione muy bien en una PC pero horrible en una consola, o viceversa.
Kylotan

Respuestas:

11

XNA Math podría ser para ti. Es una biblioteca matemática de C ++ solo con encabezado que se distribuye con el último DirectX SDK y utiliza intrínsecos SSE. No puedo hablar mucho sobre su rendimiento, pero por lo que leí al respecto, parece ser bastante decente.

XNA Math Reference

Guía de programación de XNA Math

Descarga de DX SDK

EDITAR: tampoco estoy seguro de los términos de licencia. El DX SDK Eula establece que "Código distribuible" puede no ser

"ejecutarse en una plataforma que no sea Windows, Xbox y Windows Mobile;"

No estoy completamente seguro de si esto se aplica a xna math ya que solo el código de muestra y de utilidad está marcado explícitamente como "Código Distribuible"

revs Koarl
fuente
No tengo ni idea de los términos de licencia de XNA, por ejemplo, ¿está bien usarlos en sistemas operativos que no sean de Microsoft, por ejemplo? Dicho esto, he usado la biblioteca matemática d3dx (que es casi lo mismo) en un proyecto de representación de software en un punto, por lo que no depende de directx de ninguna manera.
Jari Komppa
1
Aclaración: d3dx matemática es probablemente más o menos lo mismo en términos de licencia, aunque en términos de implementación es diferente. De acuerdo con la documentación del SDK, las matemáticas d3dx dependen en gran medida de la línea y el puntero, mientras que xnamath se basa en SIMD e intrínsecos.
Koarl
14

Usamos Matemáticas OpenGL

Aunque el nombre implica que es solo para OpenGL, no veo ninguna razón para que no funcione para DirectX. Es una biblioteca de solo encabezado, fácil de usar y se actualiza muy activamente.

Echale un vistazo.

Kyle C
fuente
2
usa licencia MIT
Jari Komppa
5

Pruebe Eigen : plantillas de expresión rápidas, vectorizadas, fáciles de usar y con licencia MPL2

Anteru
fuente
1

La biblioteca de vectores matemáticos de Sony, utilizada como parte de Bullet Physics , cumple con todos sus requisitos. Se requiere algo de trabajo para separarlo de Bullet, pero nada serio: no depende de bala, solo que nadie lo empaquetó oficialmente aparte de él.

La versión actualmente en el árbol de viñetas admite optimizaciones SSE y tiene una interfaz C ++.

Una versión anterior (probablemente ahora no compatible) también admite formatos SOA y una interfaz C pura.

usuario744
fuente
1
Parece una licencia zlib / libpng.
Jari Komppa
Estoy interesado en esto Usted mencionó que parte del trabajo está relacionado con la separación, ¿tiene algún enlace u otra información sobre qué tipo de trabajo conlleva?
0

O, para mayor velocidad, http://sourceforge.net/projects/simdx86/ .

ChrisE
fuente
3
LGPL, por lo que es bastante inútil. Una biblioteca matemática está destinada a estar en línea, por lo que esto obliga a su proyecto a ser (L) GPL también.
Jari Komppa