Apa alternatif untuk GLUT yang ada?


12

Saya mencoba mempelajari OpenGL, dan saya baru tahu bahwa GLUT sudah usang . Saya sudah tahu SDL, dan sepertinya ini adalah alternatif yang baik. Haruskah saya menggunakan SDL untuk mengembangkan game dengan OpenGL, atau adakah alternatif yang lebih baik. Saya baru dalam pengembangan game, jadi saya tidak tahu banyak tentang keadaan seni.

Jawaban:


27

Saya baru tahu bahwa GLUT sudah usang.

Itulah yang terjadi ketika Anda menerima jawaban pertama yang Anda temui; Anda mendapatkan informasi yang buruk. GLUT 3.7 tidak boleh digunakan, tetapi FreeGLUT sepenuhnya kompatibel dengan itu.

Namun, pertanyaan Anda masuk ke tempat lain. Untuk membuat game yang sebenarnya, GLUT of * form tidak pantas. Itu tidak memberi Anda kendali atas loop utama, dan Anda benar-benar membutuhkannya dalam sebuah game (FreeGLUT memang memiliki cara untuk mengontrol loop utama, tetapi itu masih aneh). GLUT adalah untuk menulis demo grafik. Itu sangat penting ketika menguji efek grafis baru, jadi itu harus ada di kotak peralatan Anda saat dibutuhkan. Tetapi kode gim utama Anda seharusnya tidak pernah menggunakannya.

GLFW adalah alternatif ringan game-centric untuk GLUT. Ini memberikan dukungan dasar untuk hal-hal di luar membuat jendela OpenGL. Ini memungkinkan Anda mendapatkan input, memuat gambar sebagai tekstur, dan beberapa hal lainnya.

SDL , SFML , dan Allegro 5 adalah perangkat multimedia. Mereka dapat membuat OpenGL jendela, tetapi mereka melakukan banyak lebih dari itu. Mereka memberikan dukungan penuh untuk input, audio, dan berbagai hal lain yang Anda butuhkan untuk membuat game. Jika Anda membuat game, semua ini adalah titik awal yang baik. Saya pribadi suka Allegro 5, tapi itu hanya bias saya terhadap dokumentasi yang baik dan API yang bersih.


1
Apa yang digunakan judul-judul AAA (hanya PC dan multi-platform)? Apakah mereka menggunakan ini (GLFW, Allegro) yang telah Anda sebutkan, untuk menangani jendela terbuka? atau mereka menulis sendiri 'semuanya' dari awal?
Quazi Irfan

@iamcreasy: "Judul AAA" (Saya sangat benci istilah itu) tidak menggunakan semua ini. Secara umum, mereka tidak menggunakan open-source apa pun. Mereka bisa, tetapi jika mereka akan menggunakan perpustakaan, mereka lebih suka menggunakan perpustakaan yang didukung. Ada beberapa pengecualian seperti ODL atau Bullet. Tapi itu adalah pengecualian dan bukan aturan.
Nicol Bolas

Sejak kapan GLFW 'memuat gambar sebagai tekstur'? Jelas tidak ada dalam daftar fitur; atau fungsi apa pun yang melayani tujuan itu dari jarak jauh di header glfw saya.
deceleratedcaviar

1
Kelemahan besar lainnya untuk GLUT adalah bahwa model inputnya tidak terlalu cocok untuk game; tidak ada cara untuk mendapatkan kode kunci mentah atau untuk mendapatkan acara pers / rilis pada tombol pengubah sendiri (misalnya menggunakan ctrl sebagai tombol api), juga tidak ada cara untuk mendapatkan konteks GL yang mendasarinya (yang diperlukan untuk mengaktifkan vsync pada X11, sebagai contoh).
lembut

1
@NicolBolas ah, saya lupa tentang 2,7, mereka [utas, gambar] telah dinyatakan 'di luar konteks' untuk rilis GLFW 3.0.
deceleratedcaviar


2

Jika tujuan Anda adalah untuk mengembangkan game,

Itu tergantung pada apakah Anda ingin game Anda menjadi cross-platform atau tidak. Untuk game portabel (Windows, Mac, Linux), SDL tampaknya menjadi satu-satunya pilihan.

Jika Anda hanya menargetkan Windows dan / atau XBox, ada banyak alternatif yang lebih baik, misalnya XNA yang membebaskan Anda dari menulis banyak kode secara manual.

Jika tujuan Anda adalah mempelajari OpenGL,

Hanya program di OpenGL mentah, tetapi bersiaplah untuk menghadapi banyak konsep tidak intuitif, matematika dan manual besar.


Seperti kata Takumi, ada juga SFML sebagai perpustakaan portabel. Lebih baik daripada SDL imho (ini lebih terkini.)
kaoD

8
-1: "Untuk game portabel (Windows, Mac, Linux), SDL tampaknya menjadi satu-satunya pilihan." Ini bahkan tidak benar. SFML dan Allegro 5 keduanya ada sebagai alternatif yang benar-benar valid, dan keduanya memiliki basis platform yang lebih luas.
Nicol Bolas

1

GLUT adalah API serta perpustakaan. Perpustakaan asli memang sudah usang. API adalah hal yang berbeda, itu cukup bagus untuk memulai, hanya perlu revisi untuk mengatasi keterbatasan dan menangani kebutuhan baru. Implementasi utama saat ini adalah FreeGLUT, yang didukung dan tidak usang. Itu berarti bahwa alternatif yang baik untuk GLUT (seperti di perpustakaan GLUT) adalah GLUT (seperti dalam FreeGLUT).

Masalah yang disebutkan di atas dengan "kontrol loop utama" salah. Dengan versi GLUT yang lebih baru Anda dapat memiliki kontrol yang lebih baik atas loop game Anda (jika itu penting bagi Anda). Batasan itu diperbaiki oleh glutMainLoopEvent (). Batasan ini dan lainnya dibahas di sini:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


" Dengan versi GLUT yang lebih baru Anda dapat memiliki kontrol yang lebih baik atas loop game Anda (jika itu penting bagi Anda). " Ini adalah game, jadi ya , itu penting bagi Anda. Juga, glutMainLoopEventbukan cara yang baik untuk mengelola loop utama. Itu masih menggunakan model event-driven untuk memberi makan Anda data, daripada model polling di mana Anda mendapatkan data yang Anda inginkan saat Anda menginginkannya.
Nicol Bolas

Saya harus berargumen bahwa model yang digerakkan oleh peristiwa lebih efisien daripada polling, kecuali jika Anda polling ke dalam data yang disimpan dari peristiwa (yang baik-baik saja). Sumber daya sistem polling harus dilakukan dengan hati-hati.
Ingemar Ragnemalm

0

Qt mendukung OpenGL. Lihatlah Open Inventor dan pertimbangkan apakah masuk akal untuk langsung menuju API 3D tingkat yang lebih tinggi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.