2011-03-31 16 views
7

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

3.2+ कोर, कार्ड और लिनक्स ड्राइवर्स के साथ मामलों की स्थिति क्या है?

उत्तर

6

पुराने इंटेल चिप्स केवल ओपनजीएल 1.5 का समर्थन करते हैं। बाद के चिप्स (लगभग दो साल पहले) 2.1 है लेकिन यह 1.5 से भी बदतर है। सैंडी ब्रिज का दावा है कि यह "ओपनजीएल 3" का समर्थन करने के लिए दावा करता है कि क्या यह 3.3 करने में सक्षम है (जैसा कि डेमन सुझाव देता है) लेकिन लिनक्स ड्राइवर केवल 2.1 करते हैं। बंद-स्रोत ड्राइवरों के साथ सभी दूरस्थ रूप से हाल ही में राडेन्स और एनवीडिया हार्डवेयर 3.3 (ज्यामिति शेडर्स) और 400-500 श्रृंखला समर्थन 4.1 (टेस्सेलेशन शेडर्स) का समर्थन करते हैं।

इसलिए, संस्करणों आप के लिए लक्ष्य करना चाहते हैं 1.5 कर रहे हैं (आप के बारे में परवाह है, तो पूर्व सैंडी-ब्रिज इंटेल बकवास), 2.1 (काफी सभी हार्डवेयर के लिए), 3.3 (सभ्य हार्डवेयर & बंद स्रोत चालकों के लिए) या 4.1 (खून बह रहा है)।

मेरे पास # हार्डवेयर 120 के साथ लिखे गए चरम और टुकड़े टुकड़े हैं और # हार्डवेयर 330 में लिखे ज्यामिति शेडर्स पुराने हार्डवेयर पर फॉलबैक आसान बनाने के लिए हैं।

+0

कई दिन पहले मुझे इंटेल चिप्स और ओपनजीएल 2.1 के साथ समस्या थी। शायद, यह 1.5 अनुरूप होना बेहतर होगा, लेकिन कभी-कभी शेडर्स वास्तव में अनिवार्य हैं। – Yury

+0

मैं ऐप्पल उत्पादों का खुद का उपयोग नहीं करता हूं, लेकिन एक चीज जोड़ने के लिए: ओएस एक्स अभी भी ओपनजीएल 2.1: ओ – Tronic

0

आपके लक्षित बाजार की औसत मशीन पर निर्भर करता है। यद्यपि ईमानदार होने के बावजूद, ओपनजीएल 3.2+ इन दिनों सुंदर सर्वव्यापी है।

1

मैं व्यक्तिगत रूप से 3.2 प्लस एक्सटेंशन (जो मूल रूप से वही है) के लिए फॉलबैक के साथ ओपनजीएल 3.3 के लिए जाता है। यह ओपनजीएल 3.x का उपयोग करने का सबसे सुविधाजनक तरीका है, और व्यापक रूप से समर्थित है।

लक्ष्य 3.1 या 3.0 वास्तव में इसके लायक नहीं है, सिवाय इसके कि यदि आप वास्तव में रेतीले पुल पर दौड़ना चाहते हैं (जो, कुछ अस्पष्ट कारण केवल 3.0 का समर्थन करता है हालांकि हार्डवेयर 3.3 करने में बहुत सक्षम है)। इसके अलावा 3.1 और 3.0 में शेडर कोड में बहुत अधिक बदलाव हैं, जो मेरी राय में रखरखाव दुःस्वप्न हैं यदि आप कई संस्करणों का समर्थन करना चाहते हैं (3.2 और 3.3 के साथ ऐसी कोई समस्या नहीं है)।

3.2 का समर्थन करने वाले प्रत्येक हार्डवेयर 3.3 का भी समर्थन कर सकते हैं, केवल बाधा यह हो सकती है कि आईएचवी हाल ही में ड्राइवर या उपयोगकर्ता को अद्यतन न करने के लिए बहुत आलसी हो। इसलिए आप "3.3 हर जगह काम नहीं कर सकते" मान सकते हैं। वैसे भी पुराने ड्राइवरों को एआरबी एक्सटेंशन के माध्यम से वही कार्यक्षमता होगी।

1

मैक ओएस एक्स फिलहाल जीएल -3 संदर्भ का समर्थन नहीं करता है। इस गर्मी में स्थिति बदल सकती है, लेकिन मैं फिर भी जीएल -2 प्लस एक्सटेंशन के साथ चिपकने की सलाह दूंगा।

5

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

असली में, ओपनजीएल ईएस 2.0 और डेस्कटॉप जीएल में कुछ अंतर हो सकता है, लेकिन मुझे नहीं लगता कि यह कुछ ऐसा होगा जो आप उपयोग करेंगे। यदि एक्सटेंशन GL_ARB_ES2_compatibility समर्थित है, तो आपके पास एक "डेस्कटॉप" कार्ड है जो पूर्ण एम्बेड सबसेट का समर्थन करता है। (4 func और कुछ const।)

अब, असली सवाल यह है कि आप कितने साल के हार्डवेयर का समर्थन करना चाहते हैं? वे अभी भी बहुत पुराने हार्डवेयर हैं जिनके पास बहुत खराब ग्लो समर्थन है। सबसे कम उम्र के पुराने (ओपनजीएल 2 का समर्थन करना होगा।0 पहले से पुराना है) :)

+0

+1 ईएस 2.0 से बेहतर कुछ भी समर्थन नहीं करता है, यह विशेषताओं का एक बड़ा संयोजन प्रतीत होता है (पूरी तरह से प्रोग्राम करने योग्य और हटाता है सभी विरासत सुविधाओं) और व्यापक संगतता। –