Perpustakaan C ++ Matematika Terbaik untuk Mesin Game? [Tutup]

18

Saya mencari perpustakaan C ++ opensource cepat untuk mesin gim saya dengan fitur-fitur berikut:

  • cepat (sse?)
  • vektor
  • matriks
  • angka empat

cocok untuk opengl dan directx

pragmaskrip
sumber
1
Saya tidak melihat mengapa perpustakaan matematika akan bergantung pada API grafik. : P
Bebek Komunis
3
afaik opengl menggunakan matriks kolom utama dan baris directx utama. jadi alangkah baiknya jika perpustakaan mendukung keduanya
pragmascript
1
Di GL, Anda selalu dapat mengatur matriks yang ditransposisikan, dan di DX, Anda dapat menentukan tata letak di shader. Menyesuaikan secara manual juga bukan masalah besar.
Anteru
1
Platform sangat penting di sini, karena cukup mudah untuk membuat perpustakaan matematika yang berfungsi baik pada PC tetapi buruk pada konsol, atau sebaliknya.
Kylotan

Jawaban:

11

XNA Math mungkin cocok untuk Anda. Ini hanya header C + + perpustakaan matematika yang didistribusikan dengan DirectX SDK terbaru dan menggunakan intrinsik SSE. Saya tidak bisa bicara banyak tentang kinerjanya tetapi dari apa yang saya baca tentang itu, tampaknya cukup baik.

Referensi Matematika XNA

Panduan pemrograman XNA Math

DX SDK unduh

EDIT: Saya juga tidak yakin tentang ketentuan lisensi. DX SDK Eula menyatakan bahwa "Kode Terdistribusi" mungkin tidak

"berjalan di platform selain platform Windows, Xbox dan Windows Mobile;"

Saya tidak sepenuhnya yakin apakah ini berlaku untuk xna matematika karena hanya sampel dan kode utilitas yang secara eksplisit ditandai sebagai "Kode Terdistribusi"

Koarl
sumber
Saya tidak tahu sama sekali tentang ketentuan lisensi XNA, misalnya, apakah boleh menggunakannya dalam sistem operasi non-microsoft, misalnya. Yang mengatakan, saya telah menggunakan perpustakaan matematika d3dx (yang merupakan hal yang hampir sama) dalam proyek rendering perangkat lunak pada satu titik, jadi itu tidak tergantung pada directx dalam cara apa pun.
Jari Komppa
1
Klarifikasi: matematika d3dx mungkin cukup banyak hal yang sama dalam hal lisensi - implementasi-bijaksana itu berbeda. Menurut dokumentasi SDK, matematika d3dx sangat bergantung pada inlining dan melewati pointer sedangkan xnamath bergantung pada SIMD dan intrinsik.
Koarl
14

Kami menggunakan Matematika OpenGL

Meskipun namanya menyiratkan itu hanya untuk OpenGL saya tidak melihat alasan itu tidak akan berhasil untuk DirectX. Ini hanya pustaka header, mudah digunakan dan sangat aktif diperbarui.

Coba lihat.

Kyle C
sumber
2
menggunakan lisensi MIT
Jari Komppa
5

Coba Eigen - cepat, templat ekspresi, vektor, mudah digunakan, dan dilisensikan di bawah MPL2

Anteru
sumber
4

Mungkin CML http://www.cmldev.net/

piotrek
sumber
1
Tingkatkan lisensi perangkat lunak.
Jari Komppa
1

Pustaka vectormath Sony, yang digunakan sebagai bagian dari Bullet Physics , memenuhi semua persyaratan Anda. Beberapa pekerjaan terlibat untuk memisahkannya dari Bullet, tetapi tidak ada yang serius - itu tidak tergantung pada peluru, hanya saja tidak ada yang pernah mengemasnya secara resmi selain dari itu.

Versi saat ini di pohon peluru mendukung optimasi SSE, dan memiliki antarmuka C ++.

Versi yang lebih lama (mungkin sekarang tidak didukung) juga mendukung format SOA, dan antarmuka C murni.

pengguna744
sumber
1
Sepertinya lisensi zlib / libpng.
Jari Komppa
Saya tertarik dengan ini. Anda menyebutkan bahwa beberapa pekerjaan terlibat dalam pemisahan, apakah Anda memiliki tautan atau informasi lain tentang jenis pekerjaan apa yang diperlukan?
0

Atau, untuk kecepatan, http://sourceforge.net/projects/simdx86/ .

ChrisE
sumber
3
LGPL, jadi sangat tidak berguna. Perpustakaan matematika dimaksudkan untuk diuraikan, jadi ini cukup memaksa proyek Anda untuk menjadi (L) GPL juga.
Jari Komppa