GLUT के क्या विकल्प मौजूद हैं?


12

मैं OpenGL सीखने की कोशिश कर रहा हूं, और मुझे पता चला कि GLUT अप्रचलित है । मैं पहले से ही एसडीएल को जानता हूं, और ऐसा लगता है कि यह एक अच्छा विकल्प है। क्या मुझे ओपनएल के साथ गेम विकसित करने के लिए एसडीएल का उपयोग करना चाहिए, या कोई बेहतर विकल्प हैं। मैं खेल के विकास के लिए नया हूं, इसलिए मुझे कला की स्थिति के बारे में ज्यादा जानकारी नहीं है।

जवाबों:


27

मुझे अभी पता चला है कि ग्लूट अप्रचलित है।

ऐसा तब होता है जब आप पहला उत्तर स्वीकार करते हैं जो आपके सामने आता है; आपको बुरी जानकारी मिलती है। ग्लूट 3.7 का उपयोग नहीं किया जाना चाहिए, लेकिन फ्रीग्लूट इसके साथ पूरी तरह से पीछे है।

हालाँकि, आपका प्रश्न कहीं और जाता है। एक वास्तविक गेम बनाने के लिए, * फॉर्म का GLUT अनुचित है। यह आपको मुख्य लूप का नियंत्रण नहीं देता है, और आपको वास्तव में एक गेम (फ्रीग्लूट में मुख्य लूप को नियंत्रित करने का एक तरीका है, लेकिन यह अभी भी अजीब है) की आवश्यकता है। GLUT ग्राफिक्स डेमो लिखने के लिए है। नए आलेखीय प्रभावों का परीक्षण करते समय यह बहुत महत्वपूर्ण है, इसलिए आवश्यकता पड़ने पर यह आपके टूलबॉक्स में होना चाहिए। लेकिन आपका मुख्य गेम कोड कभी भी इसका उपयोग नहीं करना चाहिए।

GLFW GLUT के लिए एक गेम-केंद्रित हल्का विकल्प है। यह OpenGL विंडो बनाने से परे चीजों के लिए बुनियादी सहायता प्रदान करता है। यह आपको इनपुट, लोड इमेजेस को टेक्सचर, और कुछ अन्य चीजों के रूप में देता है।

SDL , SFML और Allegro 5 सभी मल्टीमीडिया टूलकिट हैं। वे OpenGL विंडो बना सकते हैं, लेकिन वे इससे बहुत अधिक काम करते हैं। वे इनपुट, ऑडियो और विभिन्न अन्य सामानों के लिए पूर्ण समर्थन प्रदान करते हैं जिन्हें आपको एक गेम बनाने की आवश्यकता होती है। यदि आप एक गेम बना रहे हैं, तो इनमें से कोई एक अच्छा शुरुआती बिंदु है। मैं व्यक्तिगत रूप से Allegro 5 को पसंद करता हूं, लेकिन यह सिर्फ अच्छे प्रलेखन और स्वच्छ एपीआई के प्रति मेरा पूर्वाग्रह है।


1
AAA शीर्षक (केवल पीसी और मल्टी-प्लेटफॉर्म दोनों) क्या उपयोग करता है? क्या वे इन (GLFW, Allegro) का उपयोग करते हैं जो आपने उल्लेख किया है, opengl विंडो को संभालने के लिए? या वे खरोंच से अपना 'सब कुछ' लिखते हैं?
क़ाज़ी इरफ़ान

@iamcreasy: "एएए शीर्षक" (मैं वास्तव में उस शब्द से नफरत करता हूं) इनमें से किसी का भी उपयोग नहीं करते हैं। सामान्य तौर पर, वे किसी भी ओपन-सोर्स का उपयोग नहीं करते हैं। वे कर सकते थे, लेकिन अगर वे एक पुस्तकालय का उपयोग करने जा रहे हैं, तो वे एक पुस्तकालय का उपयोग करेंगे जो कि समर्थित है। ओडीएल या बुलेट जैसे कुछ अपवाद हैं। लेकिन वे नियम के बजाय अपवाद हैं।
निकोल बोल्स

कब से GLFW 'छवियों को बनावट के रूप में लोड करता है'? निश्चित रूप से फीचर सूची में नहीं है; न ही कोई फ़ंक्शन जो दूरस्थ रूप से मेरे glfw हेडर में उस उद्देश्य को पूरा करता है।
deceleratedcaviar

1
GLUT का दूसरा बड़ा पहलू यह है कि इसका इनपुट मॉडल विशेष रूप से खेलों के अनुकूल नहीं है; कच्चे कुंजीकोड प्राप्त करने के लिए या संशोधक कुंजियों पर प्रेस / रिलीज की घटनाओं को प्राप्त करने का कोई तरीका नहीं है (उदाहरण के लिए फायर बटन के रूप में ctrl का उपयोग करना), और न ही अंतर्निहित GL संदर्भ प्राप्त करने का एक तरीका है (जो X11 पर vsync को सक्षम करने के लिए आवश्यक है) उदाहरण के लिए)।
शराबी

1
@ निकोलबोल्स आह, मैं 2.7 के बारे में भूल गया, वे [धागे, चित्र] जीएलएफडब्ल्यू 3.0 रिलीज के लिए 'संदर्भ से बाहर' घोषित किए गए हैं।
deceleratedcaviar


2

यदि आपका लक्ष्य खेल विकसित करना है,

यह इस बात पर निर्भर करता है कि आप चाहते हैं कि आपका गेम क्रॉस-प्लेटफॉर्म हो या नहीं। पोर्टेबल (विंडोज, मैक, लिनक्स) गेम के लिए एसडीएल एकमात्र विकल्प लगता है।

यदि आप केवल Windows और / या XBox को लक्षित करते हैं, तो बहुत बेहतर विकल्प हैं, उदाहरण के लिए XNA जो आपको मैन्युअल रूप से बहुत सारे कोड लिखने से मुक्त करता है ।

यदि आपका लक्ष्य OpenGL सीखना है,

कच्चे OpenGL में बस प्रोग्राम करें, लेकिन बहुत सारे अनपेक्षित अवधारणाओं, गणित और विशाल मैनुअल का सामना करने के लिए तैयार रहें।


जैसा कि ताकुमी ने कहा, एक पोर्टेबल लाइब्रेरी के रूप में एसएफएमएल भी है। SDL imho की तुलना में बेहतर (यह अधिक अप-टू-डेट है।)
kaoD

8
-1: "पोर्टेबल (विंडोज, मैक, लिनक्स) गेम के लिए एसडीएल एकमात्र विकल्प लगता है।" यह भी दूर से सच नहीं है। एसएफएमएल और एलेग्रो 5 दोनों ही पूरी तरह से वैध विकल्प के रूप में मौजूद हैं, और दोनों के पास व्यापक प्लेटफार्म आधार हैं।
निकोल बोल्स

1

GLUT एक API के साथ-साथ एक लाइब्रेरी भी है। मूल पुस्तकालय वास्तव में अप्रचलित है। एपीआई एक अलग चीज है, इसे शुरू करना बहुत अच्छा था, इसे बस सीमाओं पर काबू पाने और नई जरूरतों को संबोधित करने के लिए संशोधन की आवश्यकता है। प्राथमिक वर्तमान कार्यान्वयन FreeGLUT है, जो समर्थित है और अप्रचलित नहीं है। इसका मतलब है कि GLUT (पुस्तकालय GLUT के रूप में) का एक अच्छा विकल्प GLUT है (जैसा कि FreeGLUT में है)।

"मुख्य लूप के नियंत्रण" के साथ ऊपर वर्णित समस्या गलत है। नए GLUT संस्करणों के साथ आप अपने गेम लूप पर बेहतर नियंत्रण रख सकते हैं (यदि यह आपके लिए महत्वपूर्ण है)। सीमा glutMainLoopEvent () द्वारा तय की गई थी। इस और अन्य सीमाओं को यहां संबोधित किया गया है:

http://en.wikipedia.org/wiki/OpenGL_Utility_Toolkit


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

मुझे तर्क देना चाहिए कि इवेंट संचालित मॉडल मतदान से अधिक कुशल है, जब तक कि आप घटनाओं से संग्रहीत डेटा में मतदान नहीं कर रहे हैं (जो कि अभी ठीक है)। मतदान प्रणाली संसाधनों को सावधानी से किया जाना चाहिए।
इंगमार रग्नमैलम

0

Qt OpenGL का समर्थन करता है। ओपन आविष्कारक पर एक नज़र डालें और विचार करें कि क्या यह आपके लिए सीधे उच्च स्तर के 3 डी एपीआई पर जाने के लिए समझ में आता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.