GUI yang bagus untuk OpenGL? [Tutup]


65

Saya mulai belajar OpenGL dengan FreeGLUT menggunakan Superbible dan pengetahuan yang saya miliki dari grafik dasar untuk meningkatkan keterampilan saya.

Untuk mendapatkan lebih banyak dari pengalaman ini saya ingin mengintegrasikan GUI untuk menimpa yang digunakan FreeGLUT, sekarang pertanyaan saya adalah ini: apakah hal ini mungkin dan perpustakaan apa yang harus saya gunakan?

Beberapa karakteristik untuk perpustakaan:

  • Sumber terbuka
  • Multi-platform (Linux dan Windows)
  • C / C ++

Jika Anda memiliki rekomendasi lain, silakan kirimkan bersama dengan jawaban Anda untuk masalah saya.


2
OpenGL menggunakan GUI secara default sejak kapan? : L
The Communist Duck

Dimaksudkan untuk mengatakan perpustakaan yang saya gunakan, alias FreeGLUT.
Cristina

Menambahkan karunia - persyaratan tambahan: harus memiliki dialog io file lintas-platform.
Jari Komppa

1
pada sourceforge, dialog file kecil memiliki beberapa panggilan fungsi modal. ini adalah file lintas platform C C ++ sederhana untuk ditambahkan ke proyek Anda.
tinyfiledialogs

Jawaban:


33

Saya belum mencobanya sendiri, tetapi ini terlihat sangat menarik:

librocket

EDIT: Karena Anda akan memerlukan konteks untuk di-render, saya akan merekomendasikan SFML atau SDL 1.3.


memang itu memang terlihat menarik
Will

2
Saya menggunakan libRocket dan itu sangat luar biasa! Pains of HTML hadir di perpustakaan juga, tetapi dengan beberapa bermain-main dengan itu, Anda berkeliling apa saja secara virtual: D
Grimshaw

Tampaknya terhenti (tidak ada pembaruan selama beberapa tahun). Juga, menjelajah dokumen tidak memberikan pandangan yang benar-benar bagus tentang apa yang sebenarnya. Dokumen pada umumnya terlalu rendah.
Jari Komppa

Tidak ada paket resmi untuk Fedora atau Ubuntu (sejauh yang saya bisa lihat).
ilent2

Anda juga dapat mencoba GLFW untuk membuat konteks render

19

GUI Crazy Eddie (CEGUI) sangat populer, dan Anda dapat menggunakan salah satu backend renderer yang ada atau menulis sendiri penargetan Anda apa pun API yang didukung OpenGL yang Anda inginkan. Ini adalah open source, multi-platform, dan C ++. Namun, itu menghargai konsistensi, yang tidak selalu merupakan prinsip UI yang baik untuk gim, yang mungkin memiliki lusinan kontrol khusus yang digunakan tepat di satu tempat.

Pola populer saat ini adalah mode langsung GUI (IMGUI) , yang merupakan semacam "tidak ada perpustakaan GUI". Ini memiliki kelebihan dan kekurangan - sangat mudah, tetapi bisa sulit untuk dioptimalkan, dan saya belum melihat model IMGUI yang sangat bagus untuk kontrol canggih seperti kotak kombo atau tampilan pohon. Saya juga tidak melihat implementasi yang baik dari sistem windowing IMGUI (dan saya meluangkan waktu untuk mencoba menulisnya, yang tidak pernah saya sukai) - ini sangat baik untuk elemen HUD sederhana, dan mudah untuk melakukan kontrol satu kali.


2
Saya memiliki pengalaman pertama saya tentang IMGUI baru-baru ini, dan merasa itu adalah langkah mundur yang besar. Seperti yang Anda katakan, ini bagus untuk HUD sederhana atau bilah alat statis, tetapi cukup mengerikan untuk apa pun yang dinamis, bermusuhan dengan membuat seniman atau desainer membuat tata letak, dan memaksa Anda menuju presentasi munging dan kode logika bersama di satu tempat.
Kylotan

11
-1. Saya merasa CEGUI populer hanya karena ada dan orang menyebutnya sebagai goto default (seperti ini). Ketika saya menggunakannya, saya merasa canggung dan sangat kikuk.
bobobobo

@obobobo Setuju. Ini populer karena ada. Ini adalah gui "resmi" untuk ogre (apa pun artinya) tapi saya merasa cukup rumit untuk kode. Juga, pembangun gui RAD adalah cara buggy (masih dalam pengembangan).
cheshirekow

1
imgui sayang tampaknya menjadi contoh yang bagus tentang bagaimana IMGUI yang serba bisa. Saya belum mencobanya tetapi sepertinya cukup menjanjikan.
legends2k

13

Saya baru-baru ini menemukan Gwen . Ini adalah perpustakaan GUI yang ditulis oleh penulis Gary's Mod. Ini dilisensikan sebagai MIT sebagai pustaka game yang bagus.
Logo Gwen
Perpustakaan memiliki beberapa hal untuk itu.

  • Kumpulan widget besar,
    Gwen, telah dikembangkan selama beberapa tahun dan ini menunjukkan.
  • Kustomisasi renderer backend mudah
    Ini adalah yang besar. Perpustakaan dilengkapi dengan perender OpenGL yang dibangun kembali. Tetapi membuat renderer cukup sederhana sehingga Anda mungkin ingin membuat renderer khusus untuk sistem render game Anda.
  • Kurang mengisi
    Gwen tampaknya berada di sisi yang lebih ringan dari GUI game. Tidak ada XML, tidak ada renderer HTML, hanya C ++ sederhana. Gwen juga tidak mengirim dengan pemuat gambar. Ia mengharapkan backend renderer untuk menangani pemuatan. Saya suka fitur ini karena menjaga perpustakaan tetap kecil dan sistem render permainan saya sudah mengelola tekstur.
  • Skinable
    Bukan hal pertama dalam tonggak Anda tetapi akhirnya Anda harus menyesuaikan GUI Anda dengan gim Anda.
  • C ++ menguliti
    Saya bukan pengembang web dan menemukan hUI css centric GUI sulit.
  • Injeksi input
    Ini besar untuk gim. Selalu merepotkan untuk menggunakan sistem GUI yang ingin memiliki polling input.
  • cross-platform
    Perpustakaan berusaha untuk menjadi lintas platform tetapi mereka mengakui bahwa Anda mungkin menemukan masalah pada platform yang kurang digunakan.
  • dikembangkan secara aktif.
    Lebih jauh, ini lebih kecil dari CEGUI atau MyGUI sehingga meretasnya atau mengirimkan tambalan jauh lebih praktis.

Namun, berikut adalah kekurangannya:

  • Tidak ada satu halaman dokumentasi pun. Bahkan bukan situs web lagi, hanya repo github.
  • Renderer yang dikemas tidak mudah dibawa, jadi Anda harus menulis sendiri jika Anda membutuhkannya.
  • ???

2
Kurang dokumentasi, belum portabel (belum), mungkin back-end belum selesai, dll. Tidak dapat mengetahui dari materi online apakah memiliki dialog file io (atau dialog sama sekali, dalam hal ini).
Jari Komppa

Saya setuju dokumentasinya kurang. Pustaka inti adalah lintas-platform. Namun renderer dan sistem input kurang untuk platform lain. Bagi saya itu bukan masalah karena saya membuat renderer yang dirancang khusus untuk saya.
deft_code

1
Tidak memiliki xaml / html / css bukanlah nilai tambah yang pasti. Untuk itulah hal-hal ini dibuat dan mereka melakukannya jauh lebih baik daripada C ++.
user441521

7

Maaf atas jawaban yang terlambat, tetapi Anda mungkin ingin melihat kerangka kerja OpenGL UI yang disebut GG . GG dikembangkan sebagai bagian dari proyek FreeOrion dan termasuk dalam repositori SVN mereka (dan SDK yang dapat diunduh). Tampaknya cukup mampu. Saya telah menyertakan tangkapan layar di bawah ini; Anda dapat mengklik gambar untuk melihat versi lengkap.

Cuplikan layar UI berbasis GG FreeOrion


Sepertinya GG dipindahkan ke gigi proyek terpisah di sourceforge.
deft_code

Tidak akan mengejutkan saya. Mereka sengaja membuatnya dipisahkan dari FreeOrion.
Mike Strobel

Saya hanya menghabiskan seluruh malam di atasnya dan itu benar-benar membutuhkan file CMake. Saya suka tampilan dan nuansa, saya tidak suka menggunakan Boost.
knight666

GG dapat ditemukan di sini: gigi.sourceforge.net
MichaelHouse

Semoga berhasil membangunnya di bawah windows.
3Dave


4

Lihat AntTweakBar , sedang digunakan oleh Cinder . Ada juga perpustakaan GUI baru yang dikembangkan untuk Cinder dalam karya-karya: SimpleGUI .

Jika Anda ingin menggunakan HTML + CSS ada Awesomium (digunakan oleh Wolfire Games dalam permainan Overgrowth mereka ) dan alternatif gratis yang disebut Berkelium .


AntTweakBar luar biasa, tapi agak terbatas. Ini bagus untuk apa itu dirancang untuk - nilai tweaker dan integrasi yang sangat sederhana - tetapi tidak berguna sebagai toolkit UI generik.
Jari Komppa

3

Saya telah mengutak-atik QuickGUI dan MyGUI . Mereka berdua perpustakaan GUI Ogre yang baru-baru ini membatalkan persyaratan raksasa. Saya belum memiliki terlalu banyak pengalaman dengan baik, tetapi sepertinya saya akan tetap dengan QuickGUI, karena jauh lebih kecil dan lebih sederhana.

Saya tidak yakin apakah wiki QuickGUI telah diperbarui untuk menunjukkan versi bebas-Ogre terbaru. Inilah rilis terbaru.

http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip

Di sana repo telah melihat beberapa pembaruan lintas platform, jadi Anda akan lebih baik menggunakan svn secara langsung.

http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform

Nama
Pengguna: Kata Sandi Anonim : QuickGUI

Terakhir di sini adalah wiki singkat tentang cara menambahkan backend rendering yang berbeda. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI tampaknya memiliki lebih banyak fitur dengan biaya semakin membengkak. Dan jujur ​​jika kesederhanaan bukanlah persyaratan CEGUI menghembuskan MyGUI keluar dari air.


Saya mencoba MyGUI dan itu memang sangat kembung, tidak benar-benar merekomendasikannya jika Anda ingin menghemat ruang. Masih mengutak-atik agar QuickGUI berfungsi.
Cristina

1
Saya sudah mencoba keduanya, menggunakan CEGUI untuk waktu yang lama tapi itu benar-benar menghebohkan belum lagi sangat lambat dengan banyak teks. Saya beralih ke MyGUI baru-baru ini, dan telah bekerja dengan baik. Tata letak dan editor kulit mereka sangat rapi. Saya tidak yakin tentang mengasapi, saya pikir CEGUI sangat menggembung dibandingkan. Beberapa praktik di MyGUI aneh (misalnya, operator + = untuk menugaskan delegasi, dan casting dilakukan dengan cara yang aneh juga - penulis secara aktif mengembangkannya dan mendengarkan saran yang bagus) tetapi secara keseluruhan saya lebih suka daripada CEGUI.
Samaursa

@Samaursa + = operator berarti Anda dapat menambahkan lebih dari satu delegasi.
Ocelot

3

Saya akan merekomendasikan QT, karena ini lintas platform, C ++ dan Anda bisa mendapatkan versi Open Source dengan lisensi LGPL. Ini juga mudah digunakan dan memiliki banyak komponen pra-dibuat yang dapat Anda gunakan.


6
Jangan berpikir itu adalah UI berbasis OpenGL.
DeadMG

Itu tidak mengatakan itu harus berbasis OpenGL, atau saya salah paham pertanyaan sepenuhnya? Saya membacanya karena dia tidak ingin mengambil alih untuk freeGLUT, yang QT lebih dari mampu.
martiert

Saya akan yang kedua ini! Saya menggunakan qt dan memiliki hampir semua yang dibutuhkan saat mereka memulai. Selama bertahun-tahun telah menjadi sangat stabil, dengan dukungan yang baik. Mereka juga memiliki kerangka kerja untuk permainan yang disebut gluon.
brainydexter

8
Masalah dengan QT dan kerangka kerja secara umum adalah mereka mengontrol loop utama. Itu biasanya tidak meminjamkan game dengan baik.
deft_code

1
Jika UI bukan OpenGL, maka saya sarankan untuk menyingkirkan loop utama, menggunakan UI berbasis acara dan event dan timer untuk game + grafik. Lagi pula, saya telah menggunakan QT dan saya tidak merekomendasikannya.
Danny Varod

3

Pembuatnya mungkin menembak saya karena mengatakannya, tetapi saya menemukan GLFW hanya luar biasa dalam membuat kerangka kerja GUI lintas platform. Orang-orang pengembangan GLFW terus-menerus tentang GLFW tidak menangani GUI. Ini tidak namun melakukan pekerjaan yang baik, sederhana, bersih dan benar-benar portabel menangani grafis, peristiwa dan tugas mouse / keyboard / joystick.

Yang menyenangkan tentang GLFW bagi saya adalah bahwa itu cukup kecil, tidak memerlukan kode sistem khusus, tidak ada GLUT dan terpelihara dengan baik. Sejauh ini stabil untuk digunakan pada proyek OpenGL 4.1. Dibandingkan dengan sesuatu seperti SDL, saya suka overhead yang kecil dan mudah untuk menulis kelas handler GUI.

Atau, lihat FLTK . Ini dapat digunakan untuk segala macam hal dan dirancang ulang dengan sangat sederhana. Ini benar-benar digunakan untuk membangun aplikasi tetapi sangat mampu menangani objek 3D dan dibangun di atas OpenGL. Sangat kecil, didukung dengan baik dan sementara saya tidak melihat banyak orang membuat antarmuka khusus pada tingkat desain game, ada beberapa yang tampaknya bekerja dengan baik.


1
Bukankah glfw hanya pustaka untuk abstracy kode windowing pada platform desktop? Bagaimana Anda bisa membuat grafik dengannya?

1
@GabrieleVierti juga seperti yang saya katakan ini menangani input akselerasi lintas platform juga. di luar itu lebih khusus membantu Anda mendapatkan OpenGL atau konteks Vulkan barebones dan menangani banyak boilerplate. Dengan konteksnya saya hanya mengimplementasikan piramida histogram dari hotspot di atas layar dan menggunakannya sebagai bagian utama dari pengendali event klik / jenis. kemudian kontrol asosiasi ke suatu tempat di piramida. perintah menggambar normal untuk mengatur gambar aktual. kit UI apa pun untuk hal-hal web berfungsi dengan baik atau lebih banyak seni khusus domain
Garet Claborn

Akan jauh lebih mudah untuk hanya menambahkan kerangka kerja gui yang sudah dibuat sebelumnya (seperti ImGui sayang)

1
ImGui beroperasi dalam mode langsung, sehingga Anda akan kehilangan akselerasi perangkat keras. hal-hal yang saya sebutkan harus saya lacak untuk rendering game jadi menambahkan beberapa overlay 2D bukanlah pertimbangan utama. saya bisa melihat bagaimana itu akan merepotkan untuk beberapa proyek
Garet Claborn
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.