एगुई: जंग में उपयोग में आसान तत्काल मोड जीयूआई
egui: शुद्ध रस्ट में उपयोग में आसान GUI
एगुई रस्ट के लिए एक सरल, तेज और अत्यधिक पोर्टेबल तत्काल मोड जीयूआई लाइब्रेरी है। egui वेब पर चलता है, मूल रूप से, और अपने पसंदीदा गेम इंजन में (या जल्द ही होगा)।
इगुई का लक्ष्य रस्ट जीयूआई लाइब्रेरी का उपयोग करना सबसे आसान है, और रस्ट में वेब ऐप बनाने का सबसे सरल तरीका है।
इगुई का उपयोग कहीं भी किया जा सकता है जहाँ आप बनावट वाले त्रिकोण बना सकते हैं, जिसका अर्थ है कि आप इसे आसानी से अपनी पसंद के गेम इंजन में एकीकृत कर सकते हैं।
खंड:
- उदाहरण
- जल्दी शुरू
- डेमो
- लक्ष्य
- एगुई किसके लिए है?
- राज्य / विशेषताएं
- एकीकरण
- तत्काल मोड क्यों
- सामान्य प्रश्न
- अन्य
- क्रेडिट
उदाहरण
|_+_|
जल्दी शुरू
यदि आप रस्ट (वेब के लिए या देशी के लिए) में एक जीयूआई एप्लिकेशन लिखना चाहते हैं, तो https://github.com/emilk/eframe_template/ पर जाएं और वहां दिए गए निर्देशों का पालन करें! आधिकारिक दस्तावेज़ https://docs.rs/egui पर हैं। प्रेरणा के लिए, egui वेब डेमो देखें और इसके स्रोत कोड के लिंक का अनुसरण करें। https://www.youtube.com/watch?v=NtUkr_z7l84 पर एक उत्कृष्ट ट्यूटोरियल वीडियो भी है।
यदि आप इगुई को किसी मौजूदा इंजन में एकीकृत करना चाहते हैं, तो यहां जाएं एकीकरण खंड।
यदि आपके कोई प्रश्न हैं, तो GitHub चर्चाओं का उपयोग करें। एक इगुई डिस्कॉर्ड सर्वर भी है। यदि आप egui में योगदान करना चाहते हैं, तो कृपया योगदान दिशानिर्देश पढ़ें।
डेमो
इगुई वेब डेमो चलाने के लिए क्लिक करें (WASM और WebGL समर्थन वाले किसी भी ब्राउज़र में काम करता है)। उपयोग |_+_| .
स्थानीय रूप से डेमो ऐप का परीक्षण करने के लिए, |_+_| चलाएं।
नेटिव बैकएंड |_+_| है (उपयोग करके |_+_| ) और मैक और विंडोज पर आउट-ऑफ-द-बॉक्स काम करना चाहिए, लेकिन लिनक्स पर आपको पहले चलाने की जरूरत है:
|_+_|
फेडोरा रॉहाइड पर आपको दौड़ने की जरूरत है:
|_+_|
टिप्पणी : यह केवल डेमो ऐप के लिए है - egui अपने आप में पूरी तरह से प्लेटफॉर्म अज्ञेयवादी है!
लक्ष्य
- जीयूआई लाइब्रेरी का उपयोग करना सबसे आसान है
- उत्तरदायी: डिबग बिल्ड में 60 हर्ट्ज को लक्षित करें
- मित्रवत: गलतियाँ करना मुश्किल है, और घबराना नहीं चाहिए
- पोर्टेबल: एक ही कोड वेब पर और मूल ऐप के रूप में काम करता है
- किसी भी वातावरण में एकीकृत करना आसान है
- कस्टम पेंटिंग ( |_+_| ) के लिए एक साधारण 2डी ग्राफिक्स एपीआई।
- कोई कॉलबैक नहीं
- शुद्ध तत्काल मोड
- एक्स्टेंसिबल: इगुई के लिए अपना खुद का विजेट लिखना आसान
- मॉड्यूलर: आपको एगुई के छोटे भागों का उपयोग करने और उन्हें नए तरीकों से संयोजित करने में सक्षम होना चाहिए
- सुरक्षित: कोई |_+_| नहीं है ईगुई में कोड
- न्यूनतम निर्भरताएँ: |_+_| |_+_| |_+_| , |_+_|
यह सच है नहीं एक रूपरेखा। egui एक लाइब्रेरी है जिसमें आप कॉल करते हैं, न कि ऐसा वातावरण जिसके लिए आप प्रोग्राम करते हैं।
टिप्पणी : इगुई अभी तक इन सभी लक्ष्यों तक पहुँचने का दावा नहीं करता है! इगुई पर अभी भी काम चल रहा है।
गैर लक्ष्य
- सबसे शक्तिशाली जीयूआई लाइब्रेरी बनें
- देशी दिखने वाला इंटरफ़ेस
- उन्नत और लचीले लेआउट (जो मौलिक रूप से तत्काल मोड के साथ असंगत हैं)
एगुई किसके लिए है?
जब आप जीयूआई बनाने का एक आसान तरीका चाहते हैं, या आप गेम इंजन में जीयूआई जोड़ना चाहते हैं तो ईगुई का लक्ष्य सबसे अच्छा विकल्प है।
यदि आप रस्ट का उपयोग नहीं कर रहे हैं, तो एगुई आपके लिए नहीं है। यदि आप ऐसा जीयूआई चाहते हैं जो देशी दिखे, तो एगुई आपके लिए नहीं है। यदि आप ऐसा कुछ चाहते हैं जो अपग्रेड करने पर टूटता नहीं है, तो एगुई आपके लिए नहीं है (अभी तक)।
लेकिन अगर आप रस्ट में कुछ इंटरएक्टिव लिख रहे हैं जिसके लिए एक साधारण जीयूआई की जरूरत है, तो एगुई आपके लिए हो सकता है।
इगुई बनाम प्रिय इगुई
इगुई का स्पष्ट विकल्प है |_+_| , C++ लाइब्रेरी के चारों ओर रस्ट रैपर प्रिय ImGui । प्रिय इम्गुई बहुत अधिक सुविधाओं और पॉलिश के साथ एक महान पुस्तकालय (और एगुई के लिए मुख्य प्रेरणा) है। हालाँकि, रस्ट उपयोगकर्ताओं के लिए इगुई कुछ लाभ प्रदान करता है:
- एगुई शुद्ध जंग है
- egui को आसानी से WASM में संकलित किया जाता है
- egui आपको देशी रस्ट स्ट्रिंग प्रकारों का उपयोग करने देता है (|_+_| आपको शून्य-समाप्त स्ट्रिंग्स के लिए कष्टप्रद मैक्रोज़ और रैपर का उपयोग करने के लिए मजबूर करता है)
- एगुई में अपना स्वयं का विजेट लिखना सरल है
एगुई अन्य छोटे तरीकों से भी आपके अनुभव को बेहतर बनाने की कोशिश करता है:
- विंडोज़ स्वचालित रूप से उनकी सामग्री के आधार पर आकार लेती हैं
- विंडोज़ स्वचालित रूप से एक दूसरे के साथ ओवरलैप नहीं होने के लिए स्थित हैं
- कुछ सूक्ष्म एनिमेशन इगुई को जीवंत बना देते हैं
तो संक्षेप में:
- egui: शुद्ध जंग, नया, रोमांचक, कार्य प्रगति पर है
- प्रिय ImGui: समृद्ध, अच्छी तरह से परीक्षण, बोझिल जंग एकीकरण की सुविधा
राज्य
इगुई सक्रिय विकास में है। यह जो करता है उसके लिए अच्छा काम करता है, लेकिन इसमें कई सुविधाओं का अभाव है और इंटरफेस अभी भी प्रवाह में हैं। नई रिलीज में नए बदलाव होंगे।
विशेषताएँ
- विजेट: लेबल, टेक्स्ट बटन, हाइपरलिंक, चेकबॉक्स, रेडियो बटन, स्लाइडर, ड्रैग करने योग्य मान, टेक्स्ट एडिटिंग, कॉम्बो बॉक्स, कलर पिकर
- लेआउट: क्षैतिज, लंबवत, कॉलम, स्वचालित रैपिंग
- टेक्स्ट एडिटिंग: मल्टीलाइन, कॉपी/पेस्ट, अनडू, इमोजी सपोर्ट करता है
- विंडोज: मूव, रीसाइज, नाम, मिनिमाइज और क्लोज। स्वचालित रूप से आकार और स्थिति।
- क्षेत्र: रीसाइज़िंग, वर्टिकल स्क्रॉलिंग, कोलैप्सिंग हेडर (अनुभाग)
- रेंडरिंग: रेखाओं, वृत्तों, टेक्स्ट और उत्तल बहुभुजों का एंटी-अलियास रेंडरिंग।
- हॉवर पर टूलटिप्स
- अधिक

लाइट थीम:

एकीकरण
egui को किसी भी मौजूदा गेम इंजन या प्लेटफॉर्म पर आसानी से एकीकृत करने के लिए बनाया गया है, जिस पर आप काम कर रहे हैं। egui खुद नहीं जानता या परवाह नहीं करता है कि यह किस OS पर चल रहा है या स्क्रीन पर चीजों को कैसे प्रस्तुत करना है - यह egui एकीकरण का काम है।
एक एकीकरण को प्रत्येक फ्रेम को निम्नलिखित करने की आवश्यकता है:
- एप्लिकेशन कोड चलाएँ
- |_+_| ग्लियम के साथ देशी ऐप्स को संकलित करने के लिए।
- |_+_| ग्लो के साथ नेटिव ऐप्स को कंपाइल करने के लिए।
- |_+_| वेब ऐप बनाने के लिए। WASM में संकलित करता है, WebGL के साथ प्रस्तुत करता है। इगुई डेमो चलाने के लिए क्लिक करें।
- |_+_| winit के साथ एकीकरण के लिए। |_+_| |_+_| द्वारा उपयोग किया जाता है और |_+_|.
- |_+_| नीलम खेल इंजन के लिए।
- |_+_| बीवी गेम इंजन के लिए।
- |_+_| जीएलएफडब्ल्यू के लिए।
- |_+_| एसडीएल2 के लिए।
- |_+_| दूर ज्वालामुखी।
- |_+_| wgpu (WebGPU API) के लिए।
- |_+_| दूर ज्वालामुखी।
- |_+_| मैक्रोक्वाड के लिए।
- |_+_| मिनिक्वाड के लिए।
- |_+_| टेट्रा के लिए, एक 2डी गेम फ्रेमवर्क।
- |_+_| विनीत और राख के लिए।
- |_+_| fltk-rs के लिए।
- |_+_| ggez गेम फ्रेमवर्क के लिए।
- |_+_| गोडोट-जंग के लिए।
- |_+_| नन्नू के लिए।
- |_+_| स्मिथे के लिए।
- बैकफेस कलिंग को बंद करें।
- सुनिश्चित करें कि आपने उचित सेट किया है |_+_| इगुई के इनपुट में।
- सुनिश्चित करें कि बनावट नमूना आधे पिक्सेल से कम नहीं है। जांच के लिए निकटतम-पड़ोसी सैंपलर का प्रयास करें।
- egui प्रीमल्टीप्लाइड अल्फ़ा का उपयोग करता है, इसलिए सुनिश्चित करें कि आपका ब्लेंडिंग फ़ंक्शन |_+_| है।
- सुनिश्चित करें कि आपका टेक्सचर सैंपलर क्लैम्प्ड है (|_+_|)।
- egui सभी सम्मिश्रण के लिए रैखिक रंग रिक्त स्थान को प्राथमिकता देता है:
- यदि उपलब्ध हो तो एक sRGBA-जागरूक बनावट का उपयोग करें (उदाहरण के लिए |_+_|)।
- अन्यथा: खंड शेडर में गामा को डीकोड करना याद रखें।
- अपने वर्टेक्स शेडर में आने वाले वर्टेक्स रंगों के गामा को डिकोड करें।
- यदि उपलब्ध हो तो sRGBA/रैखिक फ़्रेमबफ़र चालू करें (|_+_|)।
- अन्यथा: रंगों को फिर से लिखने से पहले गामा-एन्कोड करें।
- यदि उपलब्ध हो तो एक sRGBA-जागरूक बनावट का उपयोग करें (उदाहरण के लिए |_+_|)।
- आपको किसी भी ऑन-क्लिक हैंडलर और कॉलबैक की आवश्यकता नहीं है जो आपके कोड प्रवाह को बाधित करता है।
- आपको एक लंबे समय तक कॉलबैक के बारे में चिंता करने की ज़रूरत नहीं है जो कुछ चला गया है।
- आपका जीयूआई कोड आसानी से एक साधारण फ़ंक्शन में रह सकता है (केवल यूआई के लिए किसी ऑब्जेक्ट की आवश्यकता नहीं है)।
- आपको ऐप स्थिति और जीयूआई स्थिति के आउट-ऑफ-सिंक होने के बारे में चिंता करने की ज़रूरत नहीं है (यानी जीयूआई कुछ पुराना दिखा रहा है), क्योंकि जीयूआई किसी भी राज्य को संग्रहित नहीं कर रहा है - यह नवीनतम स्थिति दिखा रहा है तुरंत .
- चैनल (उदा. |_+_| ). |_+_| का उपयोग करना सुनिश्चित करें इसलिए आप गुई थ्रेड को ब्लॉक न करें!
- |_+_| (बैकग्राउंड थ्रेड एक मान सेट करता है; जीयूआई थ्रेड इसे पढ़ता है)
- |_+_| (उदाहरण: |_+_| )
- |_+_|
- |_+_|
- कैसे और कहाँ से खरीदें Adadex Tools (ADAT) - एक आसान स्टेप बाय स्टेप गाइड
- Quickbooks त्रुटि को ठीक करने के 8 तरीके 6069
- सर्वश्रेष्ठ प्रतिक्रिया वीडियो घटक उदाहरण
- डिस्कॉर्ड बॉट 24/7 को कैसे होस्ट करें - मुख्यालय ट्रिविया परिणाम बॉट बनाएं
- 10 सर्वश्रेष्ठ पोकेमॉन रॉम हैक्स जिन्हें आप मुफ्त में डाउनलोड कर सकते हैं
- पायथन और पीईक्यूटी के साथ एक क्यूग्राफिक्स वेक्टर इंटरफेस का निर्माण
- स्काईएक्स टोकन (SKYX) कैसे और कहां से खरीदें - एक आसान चरण दर चरण मार्गदर्शिका
- डार्ट सिंगलटन पैटर्न
- कैसे और कहाँ से खरीदें Burency (खरीदें) – एक आसान चरण दर चरण मार्गदर्शिका
- KCC GO (KCCGO) को कैसे और कहाँ से खरीदें - एक आसान स्टेप बाय स्टेप गाइड
- मशीन लर्निंग के लिए 14 सर्वश्रेष्ठ मूवी डेटासेट
- पास्ता फाइनेंस (पास्ता) कैसे और कहां से खरीदें - एक आसान स्टेप बाय स्टेप गाइड
- केवल HTML और CSS का उपयोग करके एनिमेटेड साइडबार मेनू | साइड नेविगेशन मेनू
- Kboovo Hybrid Affiliate Marketing Engine की समीक्षा ️Warning⚠️ इसके बिना अभी तक खरीदारी न करें
- एंड्रॉइड और आईफोन पर बैक कैमरा काम नहीं कर रहा है? इन 8 सुधारों को आज़माएँ
आधिकारिक एकीकरण
यदि आप कोई ऐप बना रहे हैं, तो आपके लिए |_+_| का उपयोग करना सबसे अच्छा है , आधिकारिक एगुई ढांचा। यह आपको ऐसे ऐप्स लिखने देता है जो वेब और नेटिव दोनों पर काम करते हैं। |_+_| |_+_| के ऊपर बस एक पतला आवरण है और |_+_| (नीचे देखें)।
ये आधिकारिक इगुई एकीकरण हैं:
तृतीय पक्ष एकीकरण
आप जिस चीज पर काम कर रहे हैं, उसके लिए एकीकरण नहीं मिल रहा है? एक बनाएं, यह आसान है!
अपना स्वयं का ईगुई एकीकरण लिखना
आपको |_+_| एकत्र करने की आवश्यकता है , पेंट |_+_| :es और हैंडल |_+_| . मूल संरचना यह है:
|_+_|OpenGL बैकएंड के संदर्भ के लिए, |_+_| देखें पेंटर , |_+_| पेंटर , या |_+_| |_+_| चित्रकार।
अपने एकीकरण को डिबग करना
चीजें टेढ़ी-मेढ़ी लगती हैं
मेरा पाठ धुंधला है
मेरी खिड़कियाँ बहुत पारदर्शी या बहुत अँधेरी हैं
तत्काल मोड क्यों
|_+_| a के विपरीत एक तत्काल मोड GUI लाइब्रेरी है बनाए रखा मोड जीयूआई पुस्तकालय। बनाए रखा मोड और तत्काल मोड के बीच का अंतर एक बटन के उदाहरण के साथ सबसे अच्छा सचित्र है: एक बनाए रखा जीयूआई में आप एक बटन बनाते हैं, इसे कुछ यूआई में जोड़ते हैं और कुछ ऑन-क्लिक हैंडलर (कॉलबैक) स्थापित करते हैं। बटन यूआई में बरकरार है, और उस पर टेक्स्ट बदलने के लिए आपको इसके लिए किसी प्रकार का संदर्भ स्टोर करने की आवश्यकता है। इसके विपरीत, तत्काल मोड में आप बटन दिखाते हैं और इसके साथ तुरंत इंटरैक्ट करते हैं, और आप ऐसा हर फ्रेम में करते हैं (जैसे प्रति सेकंड 60 बार)। इसका अर्थ है कि किसी भी ऑन-क्लिक हैंडलर की आवश्यकता नहीं है, न ही इसके संदर्भ को संग्रहीत करने की। में |_+_| यह ऐसा दिखता है: |_+_|.
पांडा स्कैटर प्लॉट रिग्रेशन लाइन
तत्काल मोड का अधिक विस्तृत विवरण |_+_| में पाया जा सकता है दस्तावेज़।
दोनों प्रणालियों के फायदे और नुकसान हैं।
इसका संक्षेप यह है: तत्काल मोड जीयूआई पुस्तकालयों का उपयोग करना आसान है, लेकिन कम शक्तिशाली है।
तत्काल मोड के लाभ
प्रयोज्य
तत्काल मोड का मुख्य लाभ यह है कि एप्लिकेशन कोड बेहद सरल हो जाता है:
दूसरे शब्दों में, बहुत सारे कोड, जटिलता और बग चले गए हैं, और आप अपना समय जीयूआई कोड लिखने से कहीं ज्यादा दिलचस्प पर केंद्रित कर सकते हैं।
तत्काल मोड के नुकसान
विन्यास
तत्काल मोड का मुख्य नुकसान यह है कि यह लेआउट को और अधिक कठिन बना देता है। मान लें कि आप स्क्रीन के केंद्र में एक छोटी डायलॉग विंडो दिखाना चाहते हैं। विंडो को ठीक से स्थापित करने के लिए जीयूआई लाइब्रेरी को पहले इसका आकार पता होना चाहिए। विंडो के आकार को जानने के लिए जीयूआई लाइब्रेरी को पहले विंडो की सामग्री को लेआउट करना होगा। बनाए रखा मोड में यह आसान है: जीयूआई लाइब्रेरी विंडो लेआउट करती है, विंडो की स्थिति बनाती है, फिर इंटरैक्शन की जांच करती है ('क्या ओके बटन क्लिक किया गया था?')।
तत्काल मोड में आप एक विरोधाभास में भागते हैं: खिड़की के आकार को जानने के लिए, हमें लेआउट करना चाहिए, लेकिन लेआउट कोड भी बातचीत के लिए जांच करता है ('क्या ओके बटन क्लिक किया गया था?') और इसलिए इसे विंडो की स्थिति जानने की जरूरत है इससे पहले विंडो सामग्री दिखा रहा है। इसका मतलब है कि हमें यह तय करना होगा कि विंडो को कहां दिखाना है इससे पहले हम इसका आकार जानते हैं!
यह तत्काल मोड जीयूआई की मूलभूत कमी है, और इसे हल करने का कोई भी प्रयास अपने स्वयं के डाउनसाइड्स के साथ आता है।
एक वर्कअराउंड आकार को स्टोर करना और अगले फ्रेम का उपयोग करना है। यह सही लेआउट के लिए एक फ्रेम-विलंब पैदा करता है, कभी-कभी पहले फ्रेम को झिलमिलाहट पैदा करता है जो कुछ दिखाता है। |_+_| यह विंडोज़ और ग्रिड लेआउट जैसी कुछ चीजों के लिए करता है।
आप लेआउट कोड को दो बार कॉल कर सकते हैं (एक बार आकार प्राप्त करने के लिए, एक बार इंटरैक्शन करने के लिए), लेकिन यह न केवल अधिक महंगा है, इसे लागू करना भी जटिल है, और कुछ मामलों में दो बार पर्याप्त नहीं है। |_+_| ऐसा कभी नहीं करता।
'परमाणु' विजेट्स के लिए (जैसे एक बटन) |_+_| दिखाने से पहले आकार जानता है, इसलिए |_+_| में बटन, लेबल आदि को केंद्रित करना संभव है बिना किसी विशेष उपाय के।
सि पि यु का उपयोग
चूंकि एक तत्काल मोड जीयूआई प्रत्येक फ्रेम को पूर्ण लेआउट करता है, इसलिए लेआउट कोड को त्वरित होना चाहिए। यदि आपके पास बहुत जटिल जीयूआई है तो यह सीपीयू पर कर लगा सकता है। विशेष रूप से, एक स्क्रॉल क्षेत्र में एक बहुत बड़ा यूआई होना (बहुत लंबे स्क्रॉलबैक के साथ) धीमा हो सकता है, क्योंकि सामग्री को प्रत्येक फ्रेम को बाहर करने की आवश्यकता होती है।
यदि आप जीयूआई को इस बात को ध्यान में रखते हुए डिज़ाइन करते हैं और विशाल स्क्रॉल क्षेत्रों से बचना चाहते हैं (या केवल उस भाग को बाहर रखना जो देखने में है) तो प्रदर्शन हिट आम तौर पर बहुत छोटा होता है। ज्यादातर मामलों में आप |_+_| की उम्मीद कर सकते हैं प्रति फ्रेम 1-2 एमएस लेने के लिए, लेकिन |_+_| अनुकूलन के लिए अभी भी बहुत जगह है (यह ऐसा कुछ नहीं है जिस पर मैंने अभी तक ध्यान केंद्रित किया है)। आप |_+_| भी सेट कर सकते हैं इंटरएक्शन होने पर केवल फिर से पेंट करने के लिए (जैसे माउस मूवमेंट)।
यदि आपका जीयूआई अत्यधिक इंटरैक्टिव है, तो तत्काल मोड बरकरार मोड की तुलना में वास्तव में अधिक प्रदर्शनकारी हो सकता है। किसी भी वेब पेज पर जाएं और ब्राउज़र विंडो का आकार बदलें, और आप देखेंगे कि ब्राउज़र लेआउट करने में बहुत धीमा है और ऐसा करने में बहुत अधिक CPU खाता है। |_+_| में विंडो का आकार बदलें इसके विपरीत, और आपको बिना किसी अतिरिक्त CPU लागत के 60 FPS सुचारू रूप से मिलेंगे।
आईडी
कुछ जीयूआई स्थिति हैं कि आप जीयूआई लाइब्रेरी को बनाए रखना चाहते हैं, यहां तक कि तत्काल मोड लाइब्रेरी जैसे |_+_| में भी। इसमें विंडो की स्थिति और आकार शामिल हैं और उपयोगकर्ता ने कुछ UI में कितनी दूर तक स्क्रॉल किया है। ऐसे मामलों में आपको |_+_| प्रदान करने की आवश्यकता है एक अद्वितीय पहचानकर्ता (मूल यूआई के भीतर अद्वितीय) के बीज के साथ। उदाहरण के लिए: डिफ़ॉल्ट रूप से |_+_| विंडो पोजीशन को स्टोर करने के लिए विंडो टाइटल को यूनीक आईडी के रूप में उपयोग करता है। यदि आप एक ही नाम वाली दो विंडो चाहते हैं (या डायनेमिक नाम वाली एक विंडो) तो आपको |_+_| को कोई अन्य आईडी स्रोत प्रदान करना होगा। (कुछ अद्वितीय पूर्णांक या स्ट्रिंग)।
|_+_| यह भी ट्रैक करने की आवश्यकता है कि किस विजेट के साथ इंटरैक्ट किया जा रहा है (उदाहरण के लिए कौन सा स्लाइडर खींचा जा रहा है)। |_+_| इसके लिए अद्वितीय आईडी का उपयोग करता है, लेकिन इस मामले में आईडी स्वचालित रूप से जेनरेट की जाती हैं, इसलिए उपयोगकर्ता को इसके बारे में चिंता करने की कोई आवश्यकता नहीं है। विशेष रूप से, एक ही नाम के दो बटन होने में कोई समस्या नहीं है (यह |_+_| के विपरीत है)।
कुल मिलाकर, आईडी हैंडलिंग एक दुर्लभ असुविधा है, और कोई बड़ा नुकसान नहीं है।
सामान्य प्रश्न
गिटहब चर्चाएँ भी देखें।
क्या मैं उपयोग कर सकता हूँ |_+_| गैर-लैटिन वर्णों के साथ?
हाँ! लेकिन आपको |_+_| का उपयोग करके अपना फ़ॉन्ट (|_+_| या |_+_|) इंस्टॉल करना होगा.
क्या मैं एगुई के रूप को अनुकूलित कर सकता हूँ?
हाँ! आप |_+_| का उपयोग करके हर चीज़ के रंग, रिक्ति, फ़ॉन्ट और आकार को अनुकूलित कर सकते हैं।
यहाँ एक उदाहरण है (https://github.com/AlexxxRu/TinyPomodoro से):

मैं |_+_| के साथ इगुई का उपयोग कैसे करूं?
अगर आप कॉल करते हैं |_+_| आपके जीयूआई कोड में, यूआई फ्रीज हो जाएगा, बहुत खराब यूएक्स है। इसके बजाय, GUI थ्रेड को नॉन-ब्लॉकिंग रखें और किसी भी समवर्ती कार्यों (|_+_| कार्यों या अन्य थ्रेड्स) के साथ कुछ इस तरह संवाद करें:
स्क्रीन रीडर जैसी पहुंच-योग्यता के बारे में क्या?
स्क्रीन रीडर के लिए प्रायोगिक समर्थन है। वेब डेमो में आप इसे 'बैकएंड' टैब में सक्षम कर सकते हैं।
https://github.com/emilk/egui/issues/167 पर और पढ़ें।
इगुई और एफ़्रेम में क्या अंतर है?
|_+_| बटनों, स्लाइडर्स आदि को बिछाने और उनके साथ इंटरैक्ट करने के लिए एक 2डी यूजर इंटरफेस लाइब्रेरी है। _+_| उसे पता नहीं है कि यह वेब पर चल रहा है या मूल रूप से चल रहा है, और यह नहीं जानता कि इनपुट कैसे इकट्ठा किया जाए या स्क्रीन पर चीजों को कैसे दिखाया जाए। का ही काम है एकता या बैकएंड .
|_+_| का उपयोग करना आम है गेम इंजन से (उदाहरण के लिए |_+_| का उपयोग करके), लेकिन आप |_+_| का भी उपयोग कर सकते हैं |_+_| का उपयोग करके स्टैंड-अलोन। |_+_| वेब और नेटिव के लिए एकीकरण है, और इनपुट और रेंडरिंग को संभालता है। चौखटा में |_+_| उस फ्रेम के लिए खड़ा है जिसमें आपका egui ऐप रहता है और 'फ्रेमवर्क' के लिए भी (|_+_| एक फ्रेमवर्क है, |_+_| एक लाइब्रेरी है)।
क्यों है |_+_| Firefox में इतना अधिक CPU का उपयोग कर रहे हैं?
लिनक्स और मैक पर, फ़ायरफ़ॉक्स वेबजीएल रेंडर लक्ष्य को जीपीयू से सीपीयू में कॉपी करेगा और फिर वापस करेगा: https://bugzilla.mozilla.org/show_bug.cgi?id=1010527#c0
मेरा वेब ऐप स्क्रीन की पूरी चौड़ाई क्यों नहीं भरता?
उपर्युक्त प्रदर्शन समस्याओं को कम करने के लिए एक egui वेब ऐप की डिफ़ॉल्ट अधिकतम-चौड़ाई 1024 पॉइंट है। आप |_+_| को ओवरराइड करके इसे बदल सकते हैं का |_+_| .
मैं एक egui क्षेत्र में 3D सामग्री कैसे प्रस्तुत करूँ?
egui स्वयं 3D ग्राफ़िक्स नहीं बना सकता, लेकिन यदि आप एक 3D लाइब्रेरी का उपयोग करते हैं (उदाहरण के लिए |_+_| |_+_| का उपयोग करके, या |_+_| |_+_| का उपयोग करके) तो आप अपनी 3D सामग्री को प्रस्तुत कर सकते हैं एक बनावट, फिर इसे |_+_| का उपयोग करके प्रदर्शित करें . आपको सबसे पहले नेटिव टेक्सचर को |_+_| में बदलना होगा , और यह कैसे करना है यह आपके द्वारा उपयोग किए जाने वाले एकीकरण पर निर्भर करता है (उदा. |_+_| )।
https://github.com/emilk/egui/blob/master/egui_glium/examples/native_texture.rs पर एक egui विंडो में देशी ग्लियम बनावट दिखाने के लिए एक उदाहरण है।
अन्य
सम्मेलनों और डिजाइन विकल्प
सभी निर्देशांक स्क्रीन स्पेस निर्देशांक में हैं, शीर्ष बाएं कोने में (0, 0) के साथ
सभी निर्देशांक 'बिंदुओं' में हैं जिनमें कई भौतिक पिक्सेल शामिल हो सकते हैं।
सभी रंगों में प्रीमल्टीप्लाइड अल्फ़ा होता है।
इगुई निर्माण विजेट के लिए बिल्डर पैटर्न का उपयोग करता है। उदाहरण के लिए: |_+_| मैं बिल्डर पैटर्न का बहुत बड़ा प्रशंसक नहीं हूं (यह कार्यान्वयन और उपयोग दोनों में काफी क्रियात्मक है) लेकिन जब तक रस्ट ने नाम नहीं दिया, तब तक डिफ़ॉल्ट तर्क यह सबसे अच्छा है जो हम कर सकते हैं। कुछ शब्दाडंबर को कम करने के लिए कॉमन केस हेल्पर फंक्शन हैं, जैसे |_+_|।
मेल खाने के बजाय |_+_| स्टाइल फ़ंक्शन कॉल (जो त्रुटि प्रवण हो सकते हैं) इगुई उपयोग करना पसंद करते हैं |_+_| क्लोजर एक रैपिंग फंक्शन को पास किया गया। हालांकि लैम्ब्डा थोड़े बदसूरत हैं, इसलिए मैं इसका एक अच्छा समाधान खोजना चाहता हूं। https://github.com/emilk/egui/issues/1004#issuecomment-1001650754 पर इसकी अधिक चर्चा।
प्रेरणा
एकमात्र प्रिय इम्गुई सी ++ के लिए एक महान तत्काल मोड जीयूआई है जो कई बैकएंड के साथ काम करता है। उस पुस्तकालय ने क्रांति ला दी कि मैं जीयूआई कोड के बारे में कैसे सोचता हूं और जीयूआई प्रोग्रामिंग को कुछ ऐसा करने से नफरत करता हूं जिसे मैं अब आनंद लेता हूं।
नाम
पुस्तकालय और परियोजना का नाम 'ईगुई' है और इसका उच्चारण 'ई-गोय' है। कृपया इसे 'ईजीयूआई' के रूप में न लिखें।
पुस्तकालय को मूल रूप से 'एमिगुई' कहा जाता था, लेकिन 2020 में इसका नाम बदलकर 'ईगुई' कर दिया गया।
वेब डेमो चलाने के लिए क्लिक करें
विवरण डाउनलोड करें:
लेखक: एमिल्क
स्रोत कोड: https://github.com/emilk/egui
लाइसेंस: अपाचे 2.0
#जंग #gamedev #wasm