Melhor biblioteca de matemática C ++ para o Game Engine? [fechadas]

18

Estou procurando uma biblioteca matemática C ++ de código aberto para o meu mecanismo de jogo com os seguintes recursos:

  • rápido (sse?)
  • vetores
  • matrizes
  • quaternions

adequado para opengl e directx

pragmascript
fonte
11
Não vejo por que uma biblioteca de matemática seria dependente de uma API gráfica de qualquer maneira. : P
O pato comunista
3
O afaik opengl usa matrizes principais da coluna e directx row major. por isso seria bom se a biblioteca apoiado tanto
pragmascript
11
No GL, você sempre pode definir a matriz transposta e, no DX, pode especificar o layout nos shaders. Ajustar manualmente também não é grande coisa.
Anteru
11
A plataforma é importante aqui, porque é muito fácil criar uma biblioteca de matemática que funcione muito bem em um PC, mas péssima em um console ou vice-versa.
Kylotan

Respostas:

11

XNA Math pode ser para você. É uma biblioteca matemática C ++ apenas de cabeçalho, que é distribuída com o DirectX SDK mais recente e usa intrínsecas SSE. Não posso falar muito sobre o seu desempenho, mas pelo que li sobre isso, parece bastante decente.

Referência matemática XNA

Guia de programação do XNA Math

Download do SDK do DX

EDIT: Também não tenho certeza sobre os termos de licenciamento. O DX SDK Eula afirma que "Código Distribuível" pode não ser

"execute em uma plataforma diferente das plataformas Windows, Xbox e Windows Mobile;"

Não tenho certeza se isso se aplica ao xna math, pois apenas o código de exemplo e utilitário está explicitamente marcado como "Código Distribuível"

Koarl
fonte
Não faço a mínima idéia dos termos de licenciamento da XNA, por exemplo, está correto usá-los em sistemas operacionais que não sejam da Microsoft, por exemplo. Dito isso, eu usei a biblioteca matemática d3dx (que é praticamente a mesma coisa) em um projeto de renderização de software em um ponto, por isso não depende do directx de forma alguma.
Jari Komppa
11
Esclarecimento: a matemática do d3dx é provavelmente a mesma coisa em termos de licenciamento - em termos de implementação, é diferente. De acordo com a documentação do SDK, o d3dx math depende muito de inlining e passa pelo ponteiro, enquanto o xnamath depende do SIMD e dos intrínsecos.
21411 Koarl
14

Usamos Matemática OpenGL

Embora o nome implique que seja apenas para o OpenGL, não vejo razão para que não funcione no DirectX. É uma biblioteca apenas de cabeçalho, fácil de usar e é atualizada ativamente.

Confira.

Kyle C
fonte
2
usa licença MIT
Jari Komppa
5

Experimente o Eigen - modelos de expressão rápidos, vetorizados, fáceis de usar e licenciados sob o MPL2

Anteru
fonte
4

Talvez a CML http://www.cmldev.net/

Piotrek
fonte
11
Aumente a licença do software.
Jari Komppa
1

A biblioteca de vetores da Sony, usada como parte da Bullet Physics , atende a todos os seus requisitos. Há algum trabalho envolvido para separá-lo do Bullet, mas nada sério - ele não depende do bullet, apenas que ninguém jamais o empacotou oficialmente.

A versão atualmente na árvore de marcadores suporta otimizações de SSE e possui uma interface C ++.

Uma versão mais antiga (provavelmente agora não suportada) também suporta formatos SOA e uma interface C pura.

user744
fonte
11
Parece licença zlib / libpng.
Jari Komppa
Estou interessado nisso. Você mencionou que algum trabalho está envolvido na separação. Você tem links ou outras informações sobre que tipo de trabalho isso implica?
0

Ou, para velocidade, http://sourceforge.net/projects/simdx86/ .

ChrisE
fonte
3
LGPL, por isso é bastante inútil. Uma biblioteca de matemática deve ser embutida, portanto isso praticamente força o seu projeto a ser (L) GPL também.
Jari Komppa