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


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"


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.


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



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.


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?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.