Biblioteca matemática completa para uso no OpenGL ES 2.0 Game? [fechadas]

14

Você conhece uma biblioteca matemática completa (ou quase completa) entre plataformas para uso em jogos OpenGL ES 2.0?

A biblioteca deve conter:

  • Classes Matrix2x2, Matrix 3x3, Matrix4x4
  • Quaternions
  • Classes Vector2, Vector3, Vector4
  • Classe de ângulo de Euler
  • Operações entre as classes acima mencionadas, conversões, etc.
  • Operações matemáticas usadas de forma padrão em gráficos 3D (Produto Dot, Produto Cruzado, SLERP, etc ...)

Existe essa API matemática disponível autônoma ou como parte de qualquer pacote ?

Linguagem de programação: Visual C ++, mas planejado para ser portado para o OS X e Android.

Bunkai.Satori
fonte
Por enquanto, não existe uma biblioteca matemática perfeita, apenas tentei escrever alguns requisitos e nenhuma biblioteca os possui; bem, na realidade, eu gostaria que alguém tornasse uma biblioteca fácil como GLM com a mesma função que shaders + o estilo da biblioteca matemática do Ogre e algumas de suas funcionalidades (que o GLM está faltando, como ver frustum, caixas delimitadoras etc.) Observe também que o GLM não é tão rápido (na realidade isso não importa), então duvido que alguém o use em traçadores de raios ou coisas intensivas, é mais útil por causa de sua API e estilo de design
GameDeveloper 02/07/2014

Respostas:

14

Você considerou a Biblioteca de matemática configurável ?

user1430
fonte
+1 @ Josh: Obrigado pela sua boa dica. Atualmente, estou considerando a biblioteca GL Math ( GLM.g-truc.net ). Vou esperar para ver quais bibliotecas as pessoas já tentaram e provaram ser boas.
Backai.Satori
3
Eu recomendo fortemente o GLM. Eu uso ele e sua "incrível"
brainydexter
+1, eu gosto muito de CML e teria postado isso como resposta =). No entanto, depende muito das otimizações do compilador, pois é genérico e baseado em modelo. Se você estiver segmentando um dispositivo móvel (provavelmente como citou ES), alguma outra biblioteca de matemática poderá ser melhor otimizada para o destino.
Jari Komppa
Olá Brainy, Jari, obrigado por seus comentários. Eu ainda gostaria de ver, se existem mais opções com feedback do usuário disponíveis, portanto, desejo manter essa pergunta em aberto por um tempo.
Bunkai.Satori
@Jari - ao discutir a otimização da biblioteca de matemática para a plataforma OpenGL ES, o que está incluído? Quero dizer, se os tipos de fórmula e dados são projetados corretamente, o que mais pode ser feito para otimizar a biblioteca da plataforma ES? (Pode ser questão elementar, mas eu não tenho resposta para isso.)
Bunkai.Satori
8

Eigen é uma biblioteca matemática de cabeçalho C ++ que suporta a vetorização SSE, AltiVec e ARM Neon.

Simon Lacey
fonte
+1 para obter uma ótima dica. Olá Simon, obrigado pela sua ótima dica. Comecei a usar o GLM (OpenGL Math Library), e é incrível. Ele contém tudo, desde vetor, matriz, matemática de quaternário, interpotações SLERP, etc ... até agora, oferece mais do que eu realmente preciso, por isso estou feliz com isso por enquanto.
Bunkai.Satori
6

Aqui estão 2:

  1. Vectormath da Sony
  2. Linearmath da bala
Maik Semder
fonte
+1 para obter boas dicas. Oi Maik, obrigado por seus comentários. Na minha opinião, o segundo pode ser útil, especialmente quando o jogo integra o Bullet Physics. Meu jogo vai usar o Bullet Physics, mas, infelizmente, eu comecei a usar o GLM, então tentarei manter o GLM.
Bunkai.Satori
4

Eu trabalhei na adição do GLKMath da Apple a este teste (na verdade bifurquei este garfo )

Aqui está o resultado no meu iPod Touch de 4 gerações :

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.

Aqui está o meu código

Não tenho um dispositivo Android, mas estou curioso para saber como o GLKMath funcionará no Android.

chunkyguy
fonte