Najlepsza biblioteka matematyczna C ++ dla Game Engine? [Zamknięte]

18

Szukam szybkiej biblioteki matematycznej C ++ dla mojego silnika gry z następującymi funkcjami:

  • szybki (sse?)
  • wektory
  • matryce
  • czwartorzędy

odpowiedni zarówno dla opengl, jak i directx

pragmascript
źródło
1
I tak nie rozumiem, dlaczego biblioteka matematyczna byłaby zależna od graficznego interfejsu API. : P
Kaczka komunistyczna
3
afaik opengl używa głównych macierzy kolumn i głównych wierszy directx. więc byłoby miło, gdyby biblioteka obsługiwała oba
pragmascript
1
W GL zawsze można ustawić transponowaną matrycę, aw DX można określić układ w modułach cieniujących. Ręczne dostosowywanie również nie jest wielkim problemem.
Anteru
1
Platforma jest tutaj ważna, ponieważ dość łatwo jest stworzyć bibliotekę matematyczną, która działa świetnie na PC, ale okropnie na konsoli i odwrotnie.
Kylotan

Odpowiedzi:

11

XNA Math może być dla Ciebie. Jest to biblioteka matematyczna C ++ zawierająca tylko nagłówki, która jest dystrybuowana z najnowszym zestawem SDK DirectX i wykorzystuje elementy wewnętrzne SSE. Nie mogę dużo mówić o jego wydajności, ale z tego, co o nim czytałem, wydaje się całkiem przyzwoity.

XNA Math Reference

Przewodnik po programowaniu XNA Math

Pobieranie DX SDK

EDYCJA: Nie jestem również pewien warunków licencyjnych. DX SDK Eula stwierdza, że ​​„Kod Dystrybucyjny” może nie być

„działa na platformie innej niż Windows, Xbox i Windows Mobile;”

Nie jestem całkowicie pewien, czy dotyczy to matematyki xna, ponieważ tylko przykładowy i użyteczny kod jest wyraźnie oznaczony jako „Kod dystrybucyjny”

Koarl
źródło
Nie mam pojęcia o warunkach licencyjnych XNA, np. Czy można je stosować na przykład w systemach operacyjnych innych niż Microsoft. To powiedziawszy, użyłem biblioteki matematycznej d3dx (która jest prawie taka sama) w projekcie renderującym oprogramowanie w pewnym momencie, więc nie jest w żaden sposób zależna od directx.
Jari Komppa,
1
Wyjaśnienie: matematyka d3dx jest prawdopodobnie podobna do warunków licencyjnych - pod względem implementacji jest jednak inna. Zgodnie z dokumentacją SDK matematyka d3dx w dużym stopniu opiera się na wstawianiu i przekazywaniu wskaźnika, podczas gdy xnamath opiera się na SIMD i wewnętrznych.
Koarl
14

Używamy matematyki OpenGL

Mimo że nazwa sugeruje, że jest to tylko OpenGL, nie widzę powodu, dla którego nie miałby działać w DirectX. Jest to biblioteka tylko z nagłówkami, łatwa w użyciu i bardzo aktywnie aktualizowana.

Sprawdź to.

Kyle C.
źródło
2
korzysta z licencji MIT
Jari Komppa
5

Wypróbuj Eigen - szybkie szablony ekspresji, wektoryzowane, łatwe w użyciu i licencjonowane na licencji MPL2

Anteru
źródło
4

Może CML http://www.cmldev.net/

piotrek
źródło
1
Zwiększ licencję na oprogramowanie.
Jari Komppa,
1

Biblioteka vectormath firmy Sony, używana jako część Bullet Physics , spełnia wszystkie Twoje wymagania. Oddzielenie go od Bullet wymaga pewnej pracy, ale nic poważnego - nie zależy to od kuli, tyle że nikt nigdy nie zapakował jej oficjalnie poza nią.

Wersja obecnie w drzewie punktorów obsługuje optymalizacje SSE i ma interfejs C ++.

Starsza wersja (prawdopodobnie teraz nieobsługiwana) obsługuje również formaty SOA i czysty interfejs C.

użytkownik744
źródło
1
Wydaje się, że jest to licencja zlib / libpng.
Jari Komppa,
Jestem zainteresowany tym. Wspomniałeś, że część pracy wiąże się z separacją, czy masz jakieś linki lub inne informacje na temat tego, jaki rodzaj pracy się z tym wiąże?
0

Lub, dla szybkości, http://sourceforge.net/projects/simdx86/ .

ChrisE
źródło
3
LGPL, więc jest całkiem bezużyteczny. Biblioteka matematyczna ma być wbudowana, więc w dużej mierze zmusza twój projekt również do (L) GPL.
Jari Komppa