OpenGL için iyi bir GUI? [kapalı]


65

Becerilerimi geliştirmek için SuperGible'ı ve temel grafiklerimden edindiğim bilgileri kullanarak FreeGLUT ile OpenGL'i öğrenmeye başlıyorum.

Bu deneyimden daha fazlasını elde etmek için, bir FreeGLUT'un kullandığı üzerine yazmak üzere bir GUI'yi entegre etmek istiyorum, şimdi sorum şu: bu mümkün mü ve hangi kütüphaneyi kullanmalıyım?

Kütüphanenin bazı özellikleri:

  • Açık kaynak
  • Çok platformlu (Linux ve Windows)
  • C / C ++

Başka bir öneriniz varsa, lütfen sorunum için verdiğiniz yanıtları birlikte göndermekten çekinmeyin.


2
OpenGL ne zamandan beri varsayılan olarak bir GUI kullanıyor? : L
Komünist Ördek

Kullandığım kütüphaneyi söylememe gerek yoktu, aka FreeGLUT.
Cristina

Eklenen ödül - ek gereklilik: platformlar arası dosya iletişim kutularına sahip olmanız gerekir.
Jari Komppa

1
sourceforge'da, minik dosya iletişim kutularının çeşitli kalıcı işlev çağrıları vardır. Projenize eklemek için basit bir C C ++ çapraz platform dosyası.
tinyfiledialogs

Yanıtlar:


33

Henüz kendim denemedim, ama bu çok ilginç görünüyor:

librocket

EDIT: Oluşturmak için bir içeriğe ihtiyacınız olacağından, SFML veya SDL 1.3'ü öneririm.


Gerçekten ilginç bakmak yapar
Will

2
LibRocket kullanıyorum ve kesinlikle harika! Kütüphanede HTML'nin acıları da var, ama bazıları onunla uğraşırken, neredeyse her şeyden geçiyorsunuz: D
Grimshaw

Durmuş gibi görünüyor (birkaç yıl boyunca güncelleme yok). Ayrıca, dokümanlar arasında gezinmek, gerçekte neye benzediğine dair gerçekten iyi bir fikir vermez. Dokümanlar genellikle çok düşük seviyelidir.
Jari Komppa

Fedora veya Ubuntu için resmi bir paket de yok (gördüğüm kadarıyla).
ilent2

Bir oluşturma bağlamı oluşturmak için

19

Crazy Eddie'nin GUI'si (CEGUI) popülerdir ve mevcut render oluşturucu arka uçlarından birini seçebilir veya istediğiniz OpenGL destekli API'yi kullanarak kendi hedeflemenizi yazabilirsiniz. Açık kaynak, çoklu platform ve C ++. Ancak, tam olarak tek bir yerde kullanılan düzinelerce özel kontrole sahip olabilecek oyunlar için her zaman iyi bir UI prensibi olmayan tutarlılık değerindedir.

En son kullanılan popüler model, "GUI kütüphanesi yok" türündeki acil durum modu GUI'dir (IMGUI) . Artıları ve eksileri var - çok basit, ama optimize etmek zor olabilir ve henüz açılan kutular veya ağaç görünümleri gibi gelişmiş kontroller için gerçekten iyi IMGUI modelleri görmedim. Ayrıca bir IMGUI pencereleme sisteminin iyi bir şekilde uygulandığını görmedim (ve hiç bir zaman mutlu olmadığım birini yazmak için biraz zaman harcıyorum) - ancak basit HUD elemanları için mükemmel ve bir defaya mahsus kontroller yapmak çok kolay.


2
Geçenlerde IMGUI ile ilgili ilk deneyimimi yaşadım ve bunun büyük bir geri adım olduğunu hissettim. Söylediğiniz gibi, basit bir HUD veya statik bir araç çubuğu için harika, ancak dinamik, her şey için çok korkunç, sanatçıların veya tasarımcıların mizanpaj yaratmalarına karşı düşmanca davranıyorlar ve sunumunuzu ve mantık kodunu bir yerde bir araya getirmeye zorluyorlar.
Kylotan

11
-1. CEGUI'nin popüler olduğu hissine kapılıyorum çünkü var olduğu ve insanlar bunu varsayılan bir goto (bundan böyle) olarak bahsettiler. Kullandığımda garip ve aşırı derecede tıknaz buldum.
bobobobo

@bobobobo Anlaşıldı. Popüler çünkü var. Ogre için "resmi" gui (bu ne anlama geliyorsa) ama kodlamayı oldukça hantal buluyorum. Ayrıca, RAD gui oluşturucu yolu buggy (hala geliştirme aşamasında).
cheshirekow

1
sevgili imgui , ne kadar çok yönlü IMGUI'lerin olabileceğinin güzel bir örneği gibi görünüyor. Denemek için henüz değilim ama oldukça umut verici görünüyor.
legends2k

13

Geçenlerde Gwen arasında rastladım . Gary Mod'un yazarı tarafından yazılmış bir GUI kütüphanesi. Herhangi bir iyi oyun kütüphanesinin olması gerektiği gibi MIT lisanslıdır.
Gwen logosu
Kütüphanede bunun için birkaç şey var.

  • Büyük widget set
    Gwen birkaç yıldır geliştirilme aşamasındadır ve gösteriyor.
  • Kolay arka uç oluşturucu özelleştirme
    Bu büyük bir tanesidir. Kütüphane, bir OpenGL oluşturucu yeniden oluşturulmuştur. Ancak bir oluşturucuyu oluşturmak, oyununuzun oluşturucu sistemine özgü bir oluşturucu oluşturmak isteyebileceğiniz kadar basit.
  • Daha az doldurma
    Gwen, oyun GUI'lerinin daha hafif tarafında görünüyor. XML yok, HTML oluşturucu yok, sadece basit C ++. Gwen de görüntü yükleyicilerle birlikte gelmiyor. Oluşturucu arka ucunun yükleme işlemini gerçekleştirmesini bekler. Kütüphanenin küçük kalması ve oyunumun oluşturma sisteminin zaten dokuları yönetmesi nedeniyle bu özelliği seviyorum.
  • Skinable
    Kilometre taşlarınızdaki ilk şey değil ama sonunda GUI'nizi oyununuza göre özelleştirmeniz gerekir.
  • C ++ skinning
    Ben bir web geliştiricisi değilim ve html css merkezli GUI'leri zor buluyorum.
  • Giriş enjeksiyonu
    Bu oyunlar için büyük. Girdi yoklamalarına sahip olmak isteyen GUI sistemlerini kullanmak her zaman acı vericidir.
  • Çapraz platform
    Kütüphane çapraz platform olmaya çalışır, ancak daha az kullanılan platformlarda sorun bulabileceğinizi kabul ederler.

  • Ayrıca aktif olarak geliştirilmiştir , CEGUI veya MyGUI'den çok daha küçüktür, bu yüzden üzerine hacklemek veya yama göndermek çok daha pratiktir.

Ancak, işte bunun için eksileri:

  • Tek bir dokümantasyon sayfası yok. Artık bir web sitesi bile değil, sadece github deposu.
  • Paketlenmiş işleyiciler taşınabilirlikten yoksundur, bu nedenle ihtiyaç duyduğunuzda kendiniz yazmanız gerekir.
  • ???

2
Taşınabilir (henüz değil), opengl arka ucu tamamlanmamış vb. Belgeleri yoktur. Çevrimiçi malzemelerden dosya diyalogları (veya bunun için diyaloglar) olup olmadığına karar verememiştir.
Jari Komppa

Belgelerin eksik olduğuna katılıyorum. Çekirdek kütüphane çapraz platformdur. Ancak, işleyici ve giriş sistemleri diğer platformlar için eksiktir. Benim için bu benim için özel bir işleyici oluşturduğum için sorun oluşturmuyor.
deft_code

1
Xaml / html / css olmaması kesin bir artı değil. Bu işler bunun için yapıldı ve C ++ 'dan çok daha iyi yaptılar.
kullanici441521

7

Geç cevap için özür dilerim, ancak GG adlı bir OpenGL UI çerçevesine bakmak isteyebilirsiniz . GG, FreeOrion projesinin bir parçası olarak geliştirildi ve SVN deposuna (ve indirilebilir SDK'larına) dahil edildi. Oldukça yetenekli görünüyor. Aşağıdaki ekran görüntüsünü ekledim; Tam sürümünü görmek için resmi tıklayabilirsiniz.

FreeOrion'un GG tabanlı kullanıcı arayüzünün ekran görüntüsü


GG, sourceforge'da ayrı bir projeye taşındı gibi gözüküyor.
deft_code 11:10

Beni şaşırtmazdı. Kasıtlı olarak FreeOrion'dan ayrılmalarını sağladılar.
Mike Strobel

Ben sadece bütün bir akşam geçirdim ve gerçekten, gerçekten bir CMake dosyasına ihtiyacı var. Görünüşünü ve hissini seviyorum, Boost kullanmasını sevmiyorum.
knight666

GG burada bulunabilir: gigi.sourceforge.net
MichaelHouse

Pencerelerin altında inşa etmekte iyi şanslar.
3Dave


4

AntTweakBar'a bir bakın, Cinder tarafından kullanılıyor . Ayrıca eserlerde Cinder için geliştirilmiş yeni bir GUI kütüphanesi var: SimpleGUI .

HTML + CSS gitmek istiyorsanız orada Awesomium (kullandığı kendi Aşırı Çoğalma oyunda Wolfire Games ) ve adlı ücretsiz bir alternatif Berkelium .


AntTweakBar harika, ama oldukça sınırlı. Değer biçmek ve son derece basit entegrasyon için tasarlananlar için harikadır, ancak genel bir UI araç seti olarak kullanışlı değildir.
Jari Komppa

3

Hem QuickGUI hem de MyGUI ile uğraşıyorum . İkisi de son zamanlarda ogre gereksinimini bırakan Ogre GUI kütüphaneleridir. Henüz çok fazla bir tecrübem yok, ancak görünüşe göre QuickGUI'a bağlı kalacağım gibi çok daha küçük ve daha basit.

QuickGUI wiki'nin en yeni Ogre içermeyen sürümü gösterecek şekilde güncellendiğinden emin değilim. İşte en son sürüm.

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

Repo birkaç platformlar arası güncelleme gördü, bu nedenle svn'yi doğrudan kullanmak daha iyi olacak.

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

Kullanıcı Adı: Anonim
Şifre: QuickGUI

Son olarak, farklı oluşturma arka uçlarının nasıl ekleneceğine dair kısa wiki burada. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI, şişkin olma pahasına daha fazla özelliğe sahip görünüyor. Ve dürüst olmak gerekirse, basitlik bir gereklilik değilse, CEGUI MyGUI'yi sudan çıkarır.


MyGUI'yi denedim ve gerçekten çok şişirilmiş, yerden tasarruf etmek istiyorsanız bunu kesinlikle önermeyin. Hala QuickGUI'nin çalışmasını sağlamak için işe yaramazlar.
Cristina,

1
Her ikisini de denedim, CEGUI'yi en uzun süre kullandım, ancak çok fazla metinle çok yavaş konuşmamak kesinlikle korkunçtu. Son zamanlarda MyGUI'ye geçtim ve gayet iyi çalışıyordu. Mizanpajlarını ve cilt editörlerini çok temiz. Şişmekten emin değilim, CEGUI'nin kıyaslandığında çok şişkin olduğunu düşünüyorum. MyGUI'deki uygulamalardan bazıları garip (örneğin, + = delege atamak için operatör, ve yayın yapmak da tuhaf bir şekilde yapılır - yazarlar aktif olarak geliştiriyor ve harika olan önerileri dinliyorlar) ama ben genel olarak tercih ediyorum CEGUI.
Samaursa

@Samaursa + = operatörü, birden fazla delege ekleyebileceğiniz anlamına gelir.
Ocelot

3

QT'yi, çapraz platform, C ++ olduğundan ve LGPL lisansıyla Açık Kaynak sürümünü edinebileceğinizi tavsiye ederim. Aynı zamanda kullanımı kolaydır ve kullanabileceğiniz önceden hazırlanmış bileşenlere sahiptir.


6
Bunun bir OpenGL tabanlı kullanıcı arayüzü olduğunu düşünmeyin.
DeadMG

OpenGL tabanlı olması gerektiğini söylemiyor, yoksa soruyu tamamen yanlış mı anladım? Bunu QT'nin yapabileceğinden daha fazlası olan freeGLUT için devralacak bir şey olmadığı için okudum.
martiert

İkincisiydim! Qt kullanıyorum ve başlangıçta hemen hemen ihtiyaç duyduğu her şeye sahip. Yıllar geçtikçe, iyi bir destekle, çok kararlı hale geldi. Ayrıca gluon denilen oyunlar için bir çerçeve var.
brainydexter

8
QT ve genel olarak çerçevelerdeki sorun ana döngüyü kontrol etmeleridir. Bu genellikle kendine iyi oyunlar kazandırmaz.
deft_code

1
Kullanıcı Arabirimi OpenGL değilse, olaya dayalı kullanıcı arabirimini ve oyun + grafikleri için olayları ve zamanlayıcıları kullanarak ana döngüden kurtulmanızı öneririm. Neyse, QT kullandım ve tavsiye etmiyorum.
Danny Varod

3

Yaratıcılar bunu söylediğim için beni vurabilirler, ancak GLFW'yi platformlar arası GUI çerçeveleri oluşturma konusunda harika buluyorum . GLFW geliştirme millet ve GLFW yok hakkında devam değil GUI işlemek. Bu vermez ancak grafikler, olayları ve fare / klavye / joystick görevleri taşıma güzel, basit, temiz ve tamamen taşınabilir bir iş yapmak.

Benim için GLFW'nin güzel tarafı oldukça küçük olması, sisteme özel bir kod gerektirmemesi, GLUT içermemesi ve iyi bakılması. Şimdiye kadar OpenGL 4.1 projelerinde kullanım için kararlı olmuştur. SDL gibi bir şey ile karşılaştırıldığında minik ek yükü seviyorum ve GUI işleyici sınıfları yazmak kolaydı.

Alternatif olarak, FLTK'ya bir bakın . Her türlü şey için kullanılabilir ve çok basit bir şekilde yeniden kullanılabilir. Gerçekten uygulama oluşturmak için kullanılır, ancak 3D nesneleri kullanabilme becerisine sahiptir ve OpenGL üzerine inşa edilmiştir. Çok küçük, iyi desteklenmiş ve pek çok insanın oyun tasarımı düzeyinde özel arayüzler yaptığını görmese de, harika görünen bazı şeyler var.


1
Glfw sadece masaüstü platformlarında pencere kodunu soyutlamak için bir kütüphane değil mi? Bununla nasıl grafik oluşturabilirsin?

1
@ GabrieleVierti dediğim gibi, platformlar arası hızlandırılmış girişi de kullanıyor. Bunun ötesinde, daha açık bir şekilde OpenGL veya Vulkan bağlamında barebone almanıza yardımcı olur ve birçok kazanı idare eder. Bağlamla, sadece sıcak noktaların histogram piramidini ekran üzerinden uyguluyorum ve bunu click / type olay işleyicisinin ana parçası olarak kullanıyorum. Daha sonra kontroller piramit üzerindeki bir yerle ilişkilendirilir. gerçek grafikleri ayarlamak için normal çizim komutları. web
siteleri

Önceden yapılmış bir gui çerçevesi eklemek çok daha kolay olurdu (sevgili ImGui gibi)

1
ImGui acil modda çalışır, bu nedenle donanım ivmesini kaybedersiniz. Bahsettiğim şeyler yine de oyun sunumu için izlemem gerekti, bu yüzden bazı 2D kaplamalar eklemek önemli değildi. Bunun bazı projeler için nasıl bir güçlük olacağını görebiliyorum
Garet Claborn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.