Apakah ada perpustakaan grafis vektor lintas-platform C ++ yang baik di luar sana? [Tutup]

9

Saya membuat game dan ingin menggunakan grafik vektor. Saya mulai mengkode ulang menggunakan Kairo dan kinerjanya mengerikan. Jadi, saya mencari perpustakaan yang berbeda. Perlu untuk C ++ dan lintas-platform (misalnya tidak ada Direct2D). Ada pertanyaan lain yang diajukan seseorang sebelumnya seperti ini, tetapi tidak ada jawaban yang cocok. Pasti ada sesuatu ...?

Zach Hinchy
sumber
"Pertanyaan yang diajukan sebelumnya", maksud Anda gamedev.stackexchange.com/questions/4788/… ?
Tetrad
@Tetrad: Pertanyaan sebelumnya secara implisit mengecualikan multi platform karena secara eksplisit meminta solusi untuk windows. Dan jawabannya tampaknya hanya mengarah ke solusi terkait Windows.
Coyote
2
@ Zach Hinchy: Ketika Anda mengatakan lintas platform, apa yang Anda maksud sebenarnya? Windows, Linux, OS X? Atau apakah Anda menyertakan platform genggam iOS, Brew, Android?
Anjing hutan
2
"Pasti ada sesuatu ...?" Mengapa? Grafik vektor, secara umum, bukanlah sesuatu yang dilakukan orang yang membutuhkan 30+ fps. Apakah browser web Anda memuat halaman pada 30fps? 10fps banyak. Jika Anda menggunakan grafik vektor, itu karena Anda menghargai kualitas daripada kinerja. Dan dengan demikian, perpustakaan vektor menghargai kualitas dibandingkan kinerja. Kairo sendiri tidak lambat, tetapi merupakan renderer grafik vektor berkualitas. Dan kualitas itu berarti tidak mengurangi kinerja.
Nicol Bolas
1
@iamcreasy: Ada perbedaan besar antara hanya menggambar quad lebih besar / lebih kecil dan perpustakaan grafik vektor. Game ditampilkan dengan GPU; mereka tidak menggunakan perpustakaan grafik vektor. Mereka tidak menggunakan Kairo atau AntiGrain atau apa pun dari sifat-sifat itu.
Nicol Bolas

Jawaban:

21

Saya khawatir masalah ini cukup rumit, beberapa solusi multi platform tampaknya telah diluncurkan, dan bahkan lebih sedikit yang bertahan dengan sendirinya. Saya mencari ke subjek beberapa bulan yang lalu. Saya memiliki kendala karena saya membutuhkan mesin untuk berjalan di iOS dan Android. Tidak menemukan sesuatu yang cocok untuk saya saat itu.

Tetapi beberapa petunjuk dari apa yang saya ingat: setiap sistem GUI memiliki beberapa bentuk menggambar API. Jadi Anda mungkin menemukan sesuatu yang menarik di dalam platform lintas seperti QT .

Setara dengan Kairo akan menjadi AntiGrain. Anda mungkin ingin membandingkan kinerjanya.

OpenFrameworks memiliki dukungan untuk grafik vektor.

Perpustakaan yang sangat besar yang memiliki beberapa dukungan grafik vektor - dan bahasa yang didedikasikan untuk itu - adalah ImageMagick .

Level yang lebih rendah Anda akan menemukan Libxmi dan Libart dari proyek gnome.

Bukan API tingkat tinggi - dan saya tidak yakin peluang apa yang cocok untuk Anda - tetapi ada OpenVG standar . Ada beberapa port OpenVG melalui software OpenGL dan renderers OpenGL ES. Mesa 3D juga tampaknya memiliki implementasi OpenVG. Tetapi untuk beberapa platform hanya solusi komersial yang akan tersedia.

Ada banyak perpustakaan tingkat tinggi yang mengintegrasikan API untuk grafik vektor. Di antaranya ada satu sumber terbuka bernama Clutter untuk desain GUI dan yang digunakan dalam desain game serius ada scaleform (Not Open Source). Mesin permainan ini memiliki beberapa fungsi untuk menggambar grafik vektor: 2DEngine


EDIT : rupanya menggunakan cairo.

Anjing hutan
sumber
3

MonkVG adalah emulasi OpenVG lintas platform di atas OpenGL ES 1.1 dan 2.0. Lihat: https://github.com/micahpearlman/MonkVG

Catatan: Saya penulis asli dan pengelola perpustakaan ini. Ini memiliki lisensi BSD yang sangat liberal.

zerodog
sumber
Ini merupakan kontribusi yang bagus untuk pertanyaan tersebut, tetapi patut dicatat ketika Anda mempromosikan sesuatu yang Anda berafiliasi (seperti akun github Anda sendiri).
Seth Battin
-1

Saya akhirnya tidak repot dan hanya pergi dengan gambar beresolusi tinggi dan scaling dengan OpenGL. Ini cukup berhasil untuk situasi saya.

Zach Hinchy
sumber
4
Anda bertanya tentang perpustakaan tetapi menerima jawaban di mana dikatakan, pilih saja sebaliknya (mengabaikan fakta bahwa itu milik Anda menjawab). Itu bukan penilaian yang baik. (juga mengabaikan fakta bahwa @Coyoto butuh sekitar 15 menit untuk menulis jawabannya). Semoga harimu menyenangkan!
Quazi Irfan
1
ini sudah terlambat sekitar 3 tahun, tetapi jawaban lain telah dikirimkan baru-baru ini dan saya mendapat pemberitahuan, jadi saya akhirnya melihat ini. Saya pergi ke depan dan membatalkan milik saya dan menerima @ Coyote. Saya minta maaf tentang itu, saya tidak begitu mengerti StackOverflow saat itu. lebih baik terlambat daripada tidak, saya harap - semoga ini akan membantu orang yang melihat pertanyaan di masa depan.
Zach Hinchy