2012-06-25 12 views
20

मैं विंडोज एपीआई के समान लिनक्स एपीआई की उम्मीद कर रहा था। मैं Google पर देखता हूं क्यूटी और जीटीके के संदर्भ में है। ओपनजीएल के साथ आकर्षित करने के लिए मुझे वास्तव में एक साधारण खिड़की से ज्यादा कुछ नहीं चाहिए, इसलिए इन पुस्तकालयों में मेरे उपयोग के लिए फूला हुआ दिखाई देता है। लिनक्स के तहत विंडोज़ बनाने के लिए क्यूटी और जीटीके का उपयोग क्या होता है? क्या कम स्तर नहीं है?सी ++ के साथ लिनक्स में आप विंडो कैसे बनाते हैं?

+1

एक्स विंडोज एपीआई आम तौर पर * निक्स पर जेनेरिक "विंडिंग" के लिए निम्नतम स्तर API है। http://tronche.com/gui/x/xlib/introduction/ – Chad

+0

मैं उत्सुक हूं: आप "लिनक्स एपीआई" (जो भी आप वास्तव में इसका मतलब है) की उम्मीद क्यों करेंगे Winapi के समान ही? – PlasmaHH

+1

आप वास्तव में निम्न स्तर पर जाना नहीं चाहते हैं। उच्च स्तरीय abstractions (क्यूटी/जीटीके/WxLib/अधिक) में से एक का उपयोग करें अन्यथा आप बहुत से minutia में फंस जाएगा कि आप संभाल नहीं करना चाहते हैं कि उच्च स्तरीय ढांचे का ख्याल रखना। वे सभी आपको ओपनजीएल परत पकड़ने और उस पर आकर्षित करने की अनुमति देते हैं। –

उत्तर

10

एक्स विंडो सिस्टम आम तौर पर ड्राइंग करता है - फिर आप कच्चे एक्सलिब के शीर्ष पर क्यूटी या जीटीके जैसे टूल लूट, ड्रैग और ड्रॉप, माउसक्लिक पर ऐप्स शुरू करने और अन्य सभी 'डेस्कटॉप' सामग्री

प्रदान करने के लिए टूलकिट का उपयोग करते हैं।

Xlib and opengl के साथ सीधे काम करना काफी आसान है या यदि आप केवल glut ओपनग्लू सीखना चाहते हैं, तो आपको एक विंडो प्रदर्शित करने के लिए आवश्यक फ्रेमवर्क प्रदान करना है, माउस/कीबोर्ड ईवेंट को संभालना आदि।

+1

सिद्धांत रूप में, आप Xlib से भी बच सकते हैं और कच्चे एक्स 11 प्रोटोकॉल को ट्रांसमिट (और प्राप्त, और व्याख्या) कर सकते हैं। लेकिन यह उचित नहीं है। –

8

ओपनजीएल के लिए, इसे करने का सबसे आसान तरीका GLUT या SDL का उपयोग कर है। GLUT का उपयोग करके एक अनुमानित उदाहरण यहां दिया गया है:

#include <GL/glut.h> 

int main (int argc, char **argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); 
    glutInitWindowSize(800, 600); 
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("My new window"); 
    /* ... */ 
} 

आप वास्तव में एक्सलिब का उपयोग करने से बचना चाहते हैं क्योंकि यह उपयोग करने के लिए बेहद कठिन है। इसके अलावा, जीएलयूटी और एसडीएल आपके ओपनजीएल एप्लिकेशन को विभिन्न प्लेटफॉर्म पर पोर्ट करना आसान बनाता है।

+0

ओपनजीएल के साथ उपयोग करने के लिए आप ग्राफिक्स परत तक कैसे पहुंच सकते हैं? –

+0

@ लोकी एस्टारी: यदि आपका मतलब ड्राइंग राज्य रखने वाले किसी प्रकार का अपारदर्शी प्रकार है, तो मुझे वास्तव में पता नहीं है। जब मैं ओपनजीएल (संस्करण 1.2 में वापस) में कोड करता था, तो केवल एक, वैश्विक, ड्रॉ करने के लिए जगह थी जिसे ओपनजीएल कार्यान्वयन द्वारा आंतरिक रूप से संभाला जाता था। – C2H5OH

3

एक्स मार्टिन ने कहा, एक्स 11 (या इन दिनों का कांटा XOrg इन दिनों) विंडोिंग सिस्टम है, लेकिन आप वास्तव में X पुस्तकालयों का उपयोग किए बिना टूलकिट का उपयोग किये बिना X11 एप्लिकेशन (यानी क्लाइंट) लिख सकते हैं। दस्तावेज के लिए here देखें।

यह आमतौर पर ऐसा करने का सबसे अच्छा विचार नहीं है, क्योंकि यह दर्दनाक है और अपेक्षाकृत सरल अनुप्रयोगों के लिए काम करने के लिए बहुत सारे कोड शामिल होंगे, जैसा कि आप उन्हें उम्मीद करते हैं।

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