2014-04-23 9 views
7

मैं कुछ सालों से कंसोल प्रोग्रामिंग कर रहा हूं, और अब यह लगभग समय है कि मैंने जीयूआई की आकर्षक दुनिया के बारे में कुछ सीखा। मैंने wxwidgets में थोड़ा सा डब किया है; एक हैलो वर्ल्ड प्रोग्राम संकलित, इसके साथ थोड़ा सा खेला गया, आदिएक्स-विंडोज, wxwidgets, जीटीके/क्यूटी और ओपनजीएल के बीच क्या अंतर है?

अब मैं उन लोगों में से एक हूं जिनके पास "निम्न-स्तर का अभिशाप" है: मुझे कुछ अच्छा करने के बारे में जानने में खुशी नहीं है प्रभाव - मैं जानना चाहता हूं कि हुड के नीचे क्या चल रहा है, भले ही यह बहुत कम या कोई व्यावहारिक मूल्य न हो।

तो मैं इस विषय पर पढ़ रहा हूं (उदा। here), लेकिन मुझे अपने सिर को सभी अलग-अलग प्रणालियों, टूलकिट्स और उनके द्वारा किए जाने वाले कार्यों के चारों ओर लपेटना मुश्किल लगता है। अब तक मुझे पता चला है कि (अगर मैं गलत हूं तो कृपया मुझे सही करें):

  • लिनक्स स्वयं "कर्नेल" है; यह जीयूआई समर्थन प्रदान नहीं करता है (?)।
  • एक्स विंडो सिस्टम अधिकांश यूनिक्स-जैसी प्रणालियों पर जीयूआई के आधार पर है।
  • जीटीके एक जीयूआई टूलकिट है, क्यूटी में एक जीयूआई टूलकिट है। जीटीके और क्यूटी एक ही "स्तर" (?) पर हैं।
  • जीनोम जीटीके पर बनाया गया डेस्कटॉप वातावरण है, केडीई क्यूटी पर बनाया गया है।
  • wxwidgets एक लाइब्रेरी है जो जीटीके की तरह निम्न-स्तर टूलकिट (?) को लपेटती है, इस प्रकार क्रॉस-प्लेटफ़ॉर्म लाभ प्रदान करती है।
  • ओपनजीएल 2- और 3-डी वेक्टर ग्राफिक्स को प्रस्तुत करने के लिए एक एपीआई है।
अब

कुछ प्रश्नों के लिए: यूनिक्स सिस्टम के लिए चिपके हुए:

  1. कौन यह सब के तल पर है ?, अर्थात जो घटक बिटमैप कि अंततः स्क्रीन पर प्रदर्शित किया जाता है renders?
  2. क्या यह ओपनजीएल के माध्यम से किया जाता है? यदि हां, तो ओपनजीएल कौन कॉल करता है? और ग्राफिक्स कार्ड के बिना पुराने पीसी पर यह कैसे किया गया था?
  3. यदि आप वास्तव में जिद्दी होना चाहते थे, तो आप कितने कम जा सकते हैं? सबसे आदिम एपीआई क्या है कि आप एक जीयूआई प्रोग्राम कर सकते हैं? X11? ओपन? (कृपया तर्क द्वार मत कहो :))।

बोनस के लिए, शायद विंडोज ओएस के बारे में क्या? क्या यह समान संरचना का पालन करता है, या क्या यह पूरी तरह से अपना रास्ता तय करता है?

+2

इस प्रकार का प्रश्न http://programmers.stackexchange.com/ – RobbieE

+0

पर अधिक उपयुक्त है प्रिय @ एमगा: मैं विनम्र प्रस्ताव करता हूं कि आप अपने प्रश्न के शीर्षक का नाम बदलें "एक्स-विंडोज़, wxwidgets, GTK के बीच क्या अंतर है/क्यूटी और ओपनजीएल? " इस तरह सवाल संभवतः पाया जा सकता है और दूसरों के लिए उपयोग किया जा सकता है। –

+0

मैं रॉबी के साथ सहमत हूं। इसके अलावा, यह रास्ता बहुत व्यापक है। – lpapp

उत्तर

7
  1. एक्स सर्वर, समझाते हुए कि स्वयं 10k से अधिक शब्द लेगा। एक SO उत्तर के लिए उपयुक्त नहीं है। कोड पढ़ें और अपनी आंखें विस्फोट करें। बेयर एक्स सॉफ्टवेयर प्रतिपादन के लिए लागू है। OpenGL उस संदर्भ में दो अलग-अलग तरीकों से उपयोग किया जा सकता है (नीचे छवि देखें)।

  2. नहीं। यह एक्स पर निर्भर करता है एक्स एक्स अभी तक एक और पुस्तकालय है जो अपने ड्राइंग प्राइमेटिव को अपने डेवलपर्स की इच्छा के रूप में कार्यान्वित कर सकता है। लेकिन एक्स खुद ही एक बेहद जटिल जानवर है जिसमें इसकी हास्यास्पद संख्या विस्तार है जो आज के एक्स फ़ंक्शन को करता है (बिना ओपनजीएल समर्थन होगा, उदाहरण के तौर पर, कोई xrandr नहीं)।

  3. यह इस बात पर निर्भर करता है कि आप कितना दर्द लेने के इच्छुक हैं। आप निश्चित रूप से अपनी स्क्रीन पर एक्स प्राइमेटिव्स या ओपनजीएल प्राइमेटिव्स को आकर्षित कर सकते हैं, लेकिन अब यह 80 के दशक में नहीं है।

जीटीके +/क्यूटी की ओएस विशिष्ट एपीआई (एक्स/वेलैंड/डब्ल्यू *) कपोल-कल्पना दर्द GUIs बनाने को कम करने और लिखने के लिए कोड की मात्रा को कम करने के लिए कर रहे हैं। ये अवशोषण स्वयं जटिलता के हैं और हजारों लाइनों के कोड (केवल GtkTreeView Klass पर एक नज़र डालें जो Gtk + प्रदान करता है)। तो पिक्सेल ड्राइंग करने के बजाय अब आप बटन और लेआउट और विजेट्स के पैकिंग को परिभाषित कर सकते हैं।

GLX

भी कैसे ड्राइंग X साथ किया जाता है का अवलोकन पर एक नजर है:


तो यह विकी लेख से आप एक्स आद्य करने के लिए सिर्फ GLX extension की एक बुनियादी अवलोकन कर सकेंगे

चेतावनी दी जानी चाहिए कि अगर उम्मीदवार और मिर जंपस्टार्ट करते हैं तो उम्मीद है कि यह अब से कुछ वर्षों से अप्रचलित हो जाएगा। ये बताने के लिए पूरी तरह से अलग कहानियां हैं।

संबंधित मुद्दे