ओपन के लिए अच्छा जीयूआई? [बन्द है]


65

मैं अपने कौशल पर ब्रश करने के लिए अपने प्राथमिक ग्राफिक्स से शानदार और ज्ञान का उपयोग करके फ्रीग्लूट के साथ ओपनजीएल सीखना शुरू कर रहा हूं।

इस अनुभव से अधिक प्राप्त करने के लिए मैं एक फ्रीग्लूट उपयोगों को अधिलेखित करने के लिए जीयूआई को एकीकृत करना चाहता हूं, अब मेरा सवाल यह है: क्या यह संभव है और मुझे किस लाइब्रेरी का उपयोग करना चाहिए?

पुस्तकालय के लिए कुछ विशेषताएं:

  • खुला स्त्रोत
  • बहु-मंच (लिनक्स और विंडोज)
  • C / C ++

यदि आपके पास कोई अन्य सिफारिशें हैं तो कृपया मेरी समस्या के लिए अपने उत्तरों के साथ उन्हें पोस्ट करने के लिए स्वतंत्र महसूस करें।


2
OpenGL डिफ़ॉल्ट रूप से कब से GUI का उपयोग करता है? : L
कम्युनिस्ट डक

कहने का मतलब यह है कि मैं पुस्तकालय का उपयोग कर रहा था, उर्फ ​​फ्रीग्लूट।
क्रिस्टीना

जोड़ा गया इनाम - अतिरिक्त आवश्यकता: क्रॉस-प्लेटफ़ॉर्म फ़ाइल io संवाद होना चाहिए।
जरी कोमप्पा

1
sourceforge पर, छोटे फ़ाइल संवाद में कई मोडल फ़ंक्शन कॉल होते हैं। यह आपके प्रोजेक्ट में जोड़ने के लिए एक सरल C C ++ क्रॉस-प्लेटफ़ॉर्म फ़ाइल है।
छोटे बच्चों को

जवाबों:


33

मैंने अभी तक इसे स्वयं नहीं आज़माया है, लेकिन यह बहुत दिलचस्प लगता है:

librocket

संपादित करें: चूंकि आपको रेंडर करने के लिए एक संदर्भ की आवश्यकता होगी, इसलिए मैं एसएफएमएल या एसडीएल 1.3 की सिफारिश करूंगा।


वास्तव में यह दिलचस्प दिखता है
करेंगे

2
मैं libRocket का उपयोग करता हूं और यह बिल्कुल अद्भुत है! HTML के दर्द पुस्तकालय में भी मौजूद हैं, लेकिन इसके साथ कुछ बेवकूफ बनाने के साथ, आपको वस्तुतः कुछ भी मिलता है: D
ग्रिम्सहाव

लगता है रुक गए हैं (कुछ वर्षों के लिए कोई अद्यतन नहीं)। इसके अलावा, डॉक्स के माध्यम से ब्राउज़ करने से वास्तव में यह पसंद नहीं है कि यह वास्तव में क्या पसंद है। डॉक्स आमतौर पर बहुत कम स्तर के होते हैं।
जरी कोमप्पा

फेडोरा या उबंटू के लिए कोई आधिकारिक पैकेज नहीं है (जहां तक ​​मैं देख सकता हूं)।
ilent2

आप GLFW को रेंडर संदर्भ बनाने के लिए भी कोशिश कर सकते हैं

19

क्रेजी एडी की GUI (CEGUI) लोकप्रिय है, और आप या तो मौजूदा रेंडरर बैकेंड में से किसी एक को पाल सकते हैं या जो भी OpenGL- समर्थित एपीआई चाहते हैं, उसे अपना लक्ष्य बनाकर लिख सकते हैं। यह ओपन सोर्स, मल्टी-प्लेटफॉर्म और C ++ है। हालांकि, यह स्थिरता को महत्व देता है, जो हमेशा गेम के लिए एक अच्छा यूआई सिद्धांत नहीं है, जिसमें दर्जनों कस्टम नियंत्रण बिल्कुल एक ही स्थान पर उपयोग किए जा सकते हैं।

एक हालिया लोकप्रिय पैटर्न तत्काल मोड GUI (IMGUI) है , जो "नो GUI लाइब्रेरी" की तरह है। इसके प्लसस और मिन्यूज़ हैं - यह बहुत सीधा है, लेकिन इसे अनुकूलित करने के लिए मुश्किल हो सकता है, और मैंने अभी तक कॉम्बो बॉक्स या ट्री व्यू जैसे उन्नत नियंत्रणों के लिए वास्तव में अच्छा IMGUI मॉडल देखना है। न ही मैंने IMGUI विंडोिंग प्रणाली का अच्छा कार्यान्वयन देखा है (और मैं कुछ समय एक को लिखने की कोशिश में बिताता हूं, जिससे मैं कभी खुश नहीं था) - हालांकि, यह सरल एचयूडी तत्वों के लिए उत्कृष्ट है, और एक-बंद नियंत्रण करने के लिए सरल है।


2
मुझे हाल ही में IMGUI का पहला अनुभव मिला, और मुझे लगा कि यह एक बड़ा पिछड़ा कदम है। जैसा कि आप कहते हैं, यह एक साधारण HUD या एक स्थिर टूलबार के लिए बहुत अच्छा है, लेकिन कुछ गतिशील, शत्रुतापूर्ण होने के लिए बहुत भयानक है जिसमें कलाकार या डिजाइनर लेआउट बनाते हैं, और आपको एक ही स्थान पर एक साथ प्रस्तुति और लॉजिक कोड के लिए मजबूर करते हैं।
काइलोटन

11
-1। मुझे लग रहा है कि CEGUI केवल इसलिए लोकप्रिय है क्योंकि यह मौजूद है और लोग इसे डिफ़ॉल्ट गोटो (इस तरह) के रूप में उल्लेख करते हैं। जब मैंने इसका इस्तेमाल किया, तो मुझे यह बहुत अजीब और बेहद अजीब लगा।
बॉबोबोबो

@ बोबोबोबो सहमत। यह लोकप्रिय है क्योंकि यह मौजूद है। यह ओगरे के लिए "आधिकारिक" गुई है (जो भी इसका मतलब है) लेकिन मुझे यह कोड के लिए काफी बोझिल लगता है। इसके अलावा, आरएडी गुई बिल्डर रास्ता बगिया (अभी भी विकास में) है।
चेशिरेकोव

1
प्रिय imgui एक अच्छा उदाहरण लगता है कि बहुमुखी IMGUI कैसे हो सकते हैं। मैं अभी इसकी कोशिश कर रहा हूं लेकिन यह काफी आशाजनक है।
लीजेंड 2k

13

मैंने हाल ही में ग्वेन में ठोकर खाई । यह एक GUI पुस्तकालय है जिसे गैरी के मॉड के लेखक द्वारा लिखा गया है। यह एमआईटी लाइसेंस प्राप्त है क्योंकि किसी भी अच्छे खेल पुस्तकालय को होना चाहिए।
ग्वेन लोगो
पुस्तकालय में इसके लिए कई चीजें हैं।

  • बड़े विजेट सेट
    वेन कुछ वर्षों के लिए विकास के तहत किया गया है और यह दिखाता है।
  • आसान बैकएंड रेंडरर अनुकूलन
    यह एक बड़ा है। पुस्तकालय एक OpenGL रेंडरर पुनर्निर्माण के साथ आता है। लेकिन रेंडरर बनाना इतना सरल है कि आप अपने गेम के रेंडर सिस्टम के लिए एक रेंडरर विशिष्ट बनाना चाहेंगे।
  • कम भरने वाले
    ग्वेन गेम जीयूआई के हल्के पक्ष पर प्रतीत होते हैं। कोई XML, कोई HTML रेंडरर नहीं, बस सरल C ++। वेन इमेज लोडर के साथ जहाज नहीं करता है। यह उम्मीद करता है कि रेंडरिंग बैकेंड लोडिंग को हैंडल करे। मुझे यह सुविधा पसंद है क्योंकि यह लाइब्रेरी को छोटा बनाए रखता है और मेरे गेम का रेंडर सिस्टम पहले से ही बनावट का प्रबंधन करता है।
  • स्किनटेबल
    आपके मील के पत्थरों में पहली बात नहीं है, लेकिन अंततः आपको अपने जीयूआई को अपने गेम में अनुकूलित करना होगा।
  • C ++ स्किनिंग
    मैं एक वेब डेवलपर नहीं हूं और html css केंद्रित GUI मुश्किल है।
  • इनपुट इंजेक्शन
    यह गेम के लिए बड़ा है। यह हमेशा GUI सिस्टम का उपयोग करने के लिए एक दर्द है जो इनपुट मतदान के मालिक हैं।
  • क्रॉस-प्लेटफ़ॉर्म
    लाइब्रेरी क्रॉस प्लेटफ़ॉर्म बनने का प्रयास करती है, लेकिन वे स्वीकार करते हैं कि आपको कम उपयोग किए गए प्लेटफ़ॉर्म पर समस्याएं मिल सकती हैं।

  • आगे सक्रिय रूप से विकसित , यह CEGUI या MyGUI से बहुत छोटा है इसलिए इस पर हैकिंग या पैच सबमिट करना बहुत अधिक व्यावहारिक है।

हालांकि, यहां इसके लिए विपक्ष हैं:

  • प्रलेखन का एक भी पृष्ठ नहीं है। अब वेबसाइट भी नहीं है, सिर्फ गिटब रेपो।
  • पैकेज्ड रेंडरर्स में पोर्टेबिलिटी की कमी होती है, इसलिए आपको जरूरत पड़ने पर अपना खुद का लिखना होगा।
  • ???

2
अभाव प्रलेखन, पोर्टेबल नहीं (अभी तक), अधूरा बैक-एंड अधूरा, आदि ऑनलाइन सामग्री से यह पता नहीं लगा सके कि इसमें फ़ाइल io संवाद (या उस मामले के लिए सभी संवाद) हैं या नहीं।
जरी कोमप्पा

मैं मानता हूं कि प्रलेखन में कमी है। मुख्य पुस्तकालय क्रॉस-प्लेटफ़ॉर्म है। हालाँकि रेंडरर और इनपुट सिस्टम अन्य प्लेटफार्मों के लिए अभाव हैं। मेरे लिए यह कोई समस्या नहीं है क्योंकि मैंने एक रेंडर बनाया, जो मेरे लिए रेंडर सिस्टम के अनुरूप है।
deft_code

1
Xaml / html / css न होना ऐसा प्लस नहीं है जो सुनिश्चित हो। यही इन चीजों के लिए बनाया गया था और वे इसे सी ++ की तुलना में बहुत बेहतर करते हैं।
user441521

7

देर से जवाब के लिए खेद है, लेकिन आप एक ओपन GG नामक फ्रेम पर एक नज़र रखना चाहते हो सकता है । जीजी को फ्रीऑरियन प्रोजेक्ट के हिस्से के रूप में विकसित किया गया था और यह उनके एसवीएन रिपॉजिटरी (और उनके डाउनलोड करने योग्य एसडीके) में शामिल है। यह काफी सक्षम लगता है। मैंने नीचे एक स्क्रीनशॉट शामिल किया है; आप पूर्ण संस्करण देखने के लिए चित्र पर क्लिक कर सकते हैं।

FreeOrion के GG- आधारित UI का स्क्रीनशॉट


ऐसा लगता है कि जीजी सोर्सफोर्ज पर एक अलग प्रोजेक्ट गीगी में स्थानांतरित हो गया है।
deft_code

मुझे आश्चर्य नहीं होगा। उन्होंने जानबूझकर इसे FreeOrion से डिकॉय किया।
माइक स्ट्रोबेल

मैं बस उस पर एक पूरी शाम बिताई और यह वास्तव में, वास्तव में एक सीएमके फ़ाइल की जरूरत है। मुझे लुक और फील पसंद है, मुझे यह पसंद नहीं है कि यह बूस्ट का इस्तेमाल करे।
नाइट ६६६

जीजी यहां पाया जा सकता: gigi.sourceforge.net
MichaelHouse

सौभाग्य यह है कि खिड़कियों के नीचे निर्माण करने के लिए।
डीवेव


4

AntTweakBar पर एक नजर है , इसका उपयोग सिंडर द्वारा किया जा रहा है । कार्यों में सिंडर के लिए एक नया जीयूआई पुस्तकालय भी विकसित किया गया है: सिंपलजीयूआई

यदि आप एचटीएमएल + सीएसएस जाना चाहते हैं तो वहां ऐसोसेमियम ( उनके अतिवृद्धि खेल में वोल्फेयर गेम द्वारा उपयोग किया जाता है ) और एक मुफ्त विकल्प जिसे बर्केलियम कहा जाता है ।


AntTweakBar कमाल है, बल्कि सीमित है। यह जो इसके लिए डिज़ाइन किया गया है के लिए बहुत अच्छा है - मूल्यों और बेहद सरल एकीकरण को साझा करना - लेकिन एक सामान्य यूआई टूलकिट के रूप में उपयोगी नहीं है।
जरी कोमप्पा

3

मैं QuickGUI और MyGUI दोनों के साथ काम कर रहा हूं । वे दोनों ओग्रे जीयूआई पुस्तकालय हैं जो हाल ही में ओग्रे आवश्यकता को गिराते हैं। मेरे पास अभी तक बहुत अधिक अनुभव नहीं है, लेकिन ऐसा लगता है कि मैं क्विकगीयू के साथ चिपका रहूंगा, क्योंकि यह बहुत छोटा और सरल है।

मुझे यकीन नहीं है कि QuickGUI विकी को अभी तक नवीनतम Ogre-free संस्करण में इंगित करने के लिए अपडेट किया गया है। यहाँ नवीनतम रिलीज है।

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

रेपो ने कुछ क्रॉस-प्लेटफ़ॉर्म अपडेट देखे हैं, इसलिए आप सीधे svn का उपयोग करके बेहतर होंगे।

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

उपयोगकर्ता नाम: अनाम
पासवर्ड: QuickGUI

अन्त में यहाँ अलग-अलग प्रतिपादन बैकएंड जोड़ने के बारे में संक्षिप्त विकि है। http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI के फूला हुआ होने की कीमत पर अधिक विशेषताएं हैं। और ईमानदारी से अगर सादगी की आवश्यकता नहीं है तो CEGUI पानी से MyGUI को उड़ा देता है।


मैंने MyGUI की कोशिश की और यह वास्तव में बहुत फूला हुआ है, अगर आप अंतरिक्ष को बचाना चाहते हैं तो वास्तव में इसकी सिफारिश नहीं करें। अभी भी काम करने के लिए QuickGUI पाने के लिए fiddling।
क्रिस्टीना

1
मैंने दोनों की कोशिश की है, सबसे लंबे समय के लिए CEGUI का उपयोग किया है लेकिन यह बहुत भयावह था कि बहुत सारे पाठ के साथ अत्यंत धीमी गति का उल्लेख नहीं किया गया था। मैंने हाल ही में MyGUI पर स्विच किया, और यह अच्छी तरह से काम कर रहा है। उनके लेआउट और त्वचा संपादक बहुत साफ हैं। मैं ब्लोट के बारे में निश्चित नहीं हूं, मुझे लगता है कि CEGUI तुलना में बहुत फूला हुआ है। MyGUI में कुछ प्रथाएं अजीब हैं (उदाहरण के लिए, प्रतिनिधि सौंपने के लिए + = ऑपरेटर, और कास्टिंग एक अजीब तरीके से भी की जाती है - लेखक इसे सक्रिय रूप से विकसित कर रहे हैं और सुझाव सुन रहे हैं जो बहुत अच्छा है) लेकिन कुल मिलाकर मैं इसे पसंद करता हूं CEGUI।
समरसा

@Samaursa + = ऑपरेटर का मतलब है कि आप एक से अधिक प्रतिनिधि जोड़ सकते हैं।
Ocelot

3

मैं क्यूटी की सिफारिश करूंगा, क्योंकि यह क्रॉस प्लेटफॉर्म है, सी ++ और आप एलजीपीएल लाइसेंस के साथ इसका एक ओपन सोर्स संस्करण प्राप्त कर सकते हैं। इसका उपयोग करना भी आसान है और आपके द्वारा उपयोग किए जाने वाले बहुत सारे पूर्व-निर्मित घटक हैं।


6
ऐसा मत सोचो कि एक OpenGL आधारित UI है।
डेडएमजी

यह नहीं कहता है कि यह OpenGL आधारित होना चाहिए, या क्या मैं इस प्रश्न को पूरी तरह से गलत समझ रहा हूं? मैंने इसे पढ़ा क्योंकि वह फ्रीग्लूट के लिए कुछ लेना नहीं चाहता था, जो कि क्यूटी से अधिक सक्षम है।
15

मैं यह दूसरा होगा! मैं क्यूटी का उपयोग करता हूं और इसमें लगभग हर चीज की जरूरत होती है जब वे शुरू कर रहे होते हैं। वर्षों से यह एक अच्छा समर्थन के साथ, बहुत स्थिर हो गया है। उनके पास ग्लूऑन नामक खेलों के लिए एक रूपरेखा भी है।
brainydexter

8
सामान्य रूप से क्यूटी और रूपरेखा के साथ समस्या यह है कि वे मुख्य लूप को नियंत्रित करते हैं। यह आमतौर पर अच्छी तरह से खेल उधार नहीं है।
deft_code 19

1
यदि UI OpenGL नहीं है, तो मैं मुख्य लूप से छुटकारा पाने की सलाह देता हूं, खेल आधारित ग्राफिक्स के लिए इवेंट आधारित UI और घटनाओं और टाइमर का उपयोग कर रहा हूं। वैसे भी, मैंने क्यूटी का उपयोग किया है और मैं इसकी सिफारिश नहीं करता हूं।
डैनी व्रॉड

3

रचनाकार मुझे ऐसा कहने के लिए गोली मार सकते हैं, लेकिन मैंने जीएलएफडब्ल्यू को क्रॉस-प्लेटफॉर्म जीयूआई फ्रेमवर्क बनाने के लिए सिर्फ भयानक पाया । GLFW विकास के लोगों के बारे में और GLFW GUI को हैंडल नहीं करता है । यह है तथापि ग्राफिक्स, घटनाओं और माउस / कुंजीपटल / जॉयस्टिक कार्यों को प्रबंधित करने का एक अच्छा सरल, स्वच्छ और पूरी तरह से पोर्टेबल काम करते हैं।

मेरे लिए GLFW के बारे में अच्छी बात यह है कि यह काफी छोटा है, इसके लिए किसी सिस्टम विशिष्ट कोड की आवश्यकता नहीं है, कोई GLUT नहीं है और इसे अच्छी तरह से बनाए रखा गया है। अब तक OpenGL 4.1 परियोजनाओं पर उपयोग के लिए स्थिर रहा है। SDL जैसी किसी चीज की तुलना में मुझे छोटे ओवरहेड से प्यार है और GUI हैंडलर क्लासेस लिखना पाई के लिए आसान था।

वैकल्पिक रूप से, FLTK पर एक नज़र डालें । यह सभी प्रकार की चीजों के लिए इस्तेमाल किया जा सकता है और बहुत सरलता से पुन: purposed किया जा सकता है। यह वास्तव में अनुप्रयोग निर्माण के लिए उपयोग किया जाता है, लेकिन 3D ऑब्जेक्ट्स को संभालने में पूरी तरह सक्षम है और OpenGL पर बनाया गया है। बहुत छोटा, अच्छी तरह से समर्थित और जबकि मैं कई लोगों को गेम डिज़ाइन स्तर पर कस्टम इंटरफेस बनाते नहीं देखता, कुछ ऐसे हैं जो बहुत अच्छे लगते हैं।


1
क्या डेस्कटॉप प्लेटफार्मों पर विंडो कोड को निरस्त करने के लिए सिर्फ एक पुस्तकालय नहीं है? आप इसके साथ ग्राफिक्स कैसे बना सकते हैं?

1
@ गैब्रिएलेविएटी ने जैसा कि मैंने कहा कि यह क्रॉस-प्लेटफ़ॉर्म त्वरित इनपुट को भी संभालता है। इससे परे यह विशेष रूप से आपको नंगे पत्थरों को खोलने में मदद करता है ओपनगुल या वल्कन संदर्भ और बहुत सारे बॉयलरप्लेट को संभालता है। संदर्भ के साथ मैं सिर्फ स्क्रीन पर हॉटस्पॉट्स के हिस्टोग्राम पिरामिड को लागू करता हूं और क्लिक / टाइप इवेंट हैंडलर के मुख्य भाग के रूप में उपयोग करता हूं। फिर पिरामिड पर किसी स्थान पर सहयोगी को नियंत्रित करता है। वास्तविक ग्राफिक्स सेट करने के लिए सामान्य ड्राइंग कमांड। वेब सामग्री के लिए कोई भी UI किट ठीक काम करता है या अधिक डोमेन-विशिष्ट कला
Garet Claborn

केवल प्री-मेड गुई ढांचे को जोड़ना बहुत आसान होगा (जैसे कि प्रिय इमगुई)

1
ImGui तत्काल मोड में चल रही है, इसलिए आप हार्डवेयर त्वरण खो देंगे। मैंने जिन चीज़ों का उल्लेख किया था, उन्हें गेम रेंडरिंग के लिए वैसे भी ट्रैक करना था इसलिए कुछ 2D ओवरले जोड़ना एक बड़ा विचार नहीं था। मैं देख सकता हूँ कि कुछ परियोजनाओं के लिए यह परेशानी कैसे होगी
गार्ट क्लैबोर्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.