OpenGL के किस संस्करण के लिए मुझे कोड देना चाहिए, संगतता और प्रदर्शन विचार? [बन्द है]


19

जब OpenGL युक्ति को अद्यतन किया जाता है, तो वे केवल सुविधाएँ जोड़ते हैं। इसलिए सिद्धांत रूप में, कोर और संगतता प्रोफाइल के समर्थन के साथ नवीनतम और सबसे बड़ा हार्डवेयर सुपर पुराने OpenGL1.1 कोड को ठीक चलाना चाहिए। यह सच हो गया है। मैंने OpenGL1.1 सीखने में 12 महीने बिताए हैं और इस पर एक अच्छी पकड़ है।

मैं उन फैंसी नई OpenGL4.2 पुस्तकों में से एक के कुछ अध्यायों के बारे में पढ़ा था। लगभग सभी सुविधाएँ जिन पर मैं भरोसा करता हूं, उन्हें पदावनत किया गया है (जैसे प्रदर्शन सूचियाँ), जो मुझे यह मानने देती हैं कि इन सभी चीजों को करने के बेहतर तरीके हैं।

चलो विचार करते हैं कि 1.1 का समर्थन करने की संभावना है, पूर्ण रूप से, सभी आधुनिक हार्डवेयर द्वारा। 1.1 1992 में जारी किया गया था। मैं सिर्फ 20 साल के पीसी का समर्थन करने के लिए कठिन तरीके से कोडिंग नहीं कर रहा हूं । : -प मुझे लगता है कि अधिकांश गेमर्स यह मानकर चल रहे हैं कि हार्डवेयर लगभग 5 साल की मिड रेंज में बोतल बंद कर रहे हैं।

मुझे लगता है कि नए तरीकों को सार्वभौमिक रूप से दो चीजों में से एक होने के लिए डिज़ाइन किया गया है: बेहतर प्रदर्शन करना, या कोड करना आसान। मैंने कहीं पढ़ा है कि इसके दोनों हालांकि कभी नहीं! एक्सडी

OpenGL के किस संस्करण को ~ 5ish वर्षीय हार्डवेयर द्वारा सबसे अधिक व्यापक रूप से समर्थित किया गया है? किस संस्करण का उपयोग करने के लिए सबसे अधिक समझ में आता है, इन विचारों को देखते हुए?

जवाबों:


19

आपके विचारों को देखते हुए, मैं तब देखता था जब प्रत्येक संस्करण के लिए ओपनजीएल स्पेक्स जारी किया गया था और जो मैंने देखा है उससे कुछ समग्र अंतर्दृष्टि में तथ्य भी।

OpenGL 3, जिसने FBO, VAO और अन्य चीजों को पेश किया, लगभग 5 साल पहले 11 जुलाई, 2008 को जारी किया गया था। बेशक, आप उस तारीख के बाद के सभी कार्ड की उम्मीद नहीं कर सकते कि तुरंत ओपन 3 उपलब्ध हो।

स्टीम हार्डवेयर सर्वे पर एक नज़र डालते हुए , 40% डायरेक्टएक्स 10 हैं। जैसा कि ओपन 3 को एक समान ग्राफिक्स कार्ड की आवश्यकता होती है, यह आमतौर पर यह मान लेना सुरक्षित है कि अधिकांश डायरेक्टएक्स 10 कार्ड कम से कम ओपनग्लिश 3 चला सकते हैं।

OpenGL 3 को GeForce 8xxx श्रृंखला के लिए सभी तरह से कार्ड पर समर्थित किया गया है, जो कि अगर मुझे सही तरीके से याद है तो बहुत लोकप्रिय थे। यह भी ध्यान रखना दिलचस्प है कि Intel HD 2000 और 3000 ग्राफिक्स (सैंडी ब्रिज) केवल OpenGL 3 का समर्थन करते हैं, इसलिए ध्यान रखें कि यदि आप उन लोगों को लक्षित करने की योजना बनाते हैं।

निष्कर्ष: ओपन 3 एक अच्छी शर्त है (यह भी याद रखें कि अधिकांश गेमर्स, आपके लक्षित दर्शकों के आधार पर, संभवतः औसत से बेहतर हार्डवेयर होंगे)।


यह एक बेहतरीन जवाब है। बिल्कुल उसी तरह की अंतर्दृष्टि थी जिसकी मुझे तलाश थी।
बीर

3
"यह भी ध्यान रखना दिलचस्प है कि Intel HD 2000 और 3000 ग्राफिक्स (सैंडी ब्रिज) केवल OpenGL 3 का समर्थन करते हैं" ध्यान दें: वे केवल GL 3.1 का समर्थन करते हैं (क्योंकि इंटेल सिर्फ परवाह नहीं करता है)। और चूंकि यह इंटेल है, इसलिए नमक के एक दाने के साथ "समर्थन" लिया जाना चाहिए। उनका हार्डवेयर 3.3 का समर्थन कर सकता है , लेकिन वे इसे उजागर नहीं करते हैं (क्योंकि फिर से, वे परवाह नहीं करते हैं)। मैं इंटेल हार्डवेयर पर OpenGL 3.x का उपयोग करने से बचना चाहिए। वास्तव में, मैं इंटेल हार्डवेयर पर आधारित कुछ भी shader करने से बचता हूँ।
निकोल बोलस

फिर सवाल उठता है; कैसे इंटेल हार्डवेयर के साथ बाजार संतृप्त है? यह वैसे भी इंटेल ग्राफिक्स के बारे में देखभाल करने और OpenGL3.x का उपयोग करने के लायक नहीं है? या वहाँ वास्तव में बात करने के लिए पर्याप्त इंटेल ग्राफिक्स हार्डवेयर है?
बीर

1
एक समस्या OSX है। नवीनतम रिलीज़ 10.7.x केवल OpenGL 3.2 का समर्थन करता है , 10.6.x केवल 3.0 का समर्थन करता है (या शायद 2.x भी)। 10.5.x कार्ड के आधार पर बहुत भिन्न होता है, 1.3, 1.5 और 2.0 संभावनाएँ हैं। जब तक उपयोगकर्ता ऐप्पल को अपडेट के लिए पैसे नहीं देता है, तब तक वे सिस्टम उन OpenGL संस्करणों में हमेशा के लिए अटक जाएंगे। कोई वीडियो कार्ड ड्राइवर अपडेट या OSX के लिए ऐसा नहीं है जो OpenGL को अपडेट करेगा। अन्य समस्याएँ नेटबुक में कुछ डॉगी एम्बेडेड इंटेल चिपसेट का उपयोग हैं। उनमें से कई केवल OpenGL 2.0 या इससे भी बदतर हैं।
डेविड सी। बिशप

और फिर आपके पास 3DS है, जो अभी भी OpenGL 1.1 को
हिला

8

मैं यहाँ शुरू करूँगा: http://store.steampowered.com/hwsurvey

मैं समय-समय पर उपयोगकर्ताओं के प्रतिशत के रूप में बहुत अधिक लक्षित नहीं करूंगा, उदाहरण के लिए, यदि आप 4cpus को लक्षित करते हैं, तो आप केवल 45% उपयोगकर्ताओं को मारेंगे, लेकिन यदि आप 2 पर काम करते हैं, तो आप 90% के करीब होंगे


1
आपने ओपनजीएल को कहां देखा? मैं केवल DirectX देखता हूं (यदि आप केवल Windows को लक्षित करने के लिए योजना बनाते हैं तो यह नोट करना दिलचस्प है)।
डीएमन

मुझे लगता है कि आप ग्राफिक्स कार्ड के टूटने पर आधारित लेगवर्क करते हैं
जिमी

हाँ - मैंने ओपनजीएल के बारे में कुछ नहीं देखा - लेकिन आप इसे कार्ड मॉडल से प्राप्त कर सकते हैं, या वास्तव में, मेरा मानना ​​है कि डायरेक्टएक्स संस्करणों और ओपनजीएल के बीच उचित मात्रा में संबंध होगा।
सालमनमोसे

3

उत्तर इस बात पर निर्भर करता है कि आपको उल्लिखित समय सीमा के भीतर जारी किए गए इंटेल ग्राफिक्स पर चलने की आवश्यकता है या नहीं।

यदि आप करते हैं, तो अपने आप को OpenGL 2.1 (या यहां तक ​​कि 1.5) तक सीमित करें, यदि आप नहीं करते हैं तो 3.x उचित लगता है।

हां, OpenGL के पुराने संस्करण अभी भी चलते हैं, और हाँ, एक दृष्टिकोण से वे सरल लग सकते हैं। जहां चीजें आकार से बाहर जाती हैं, जब आप चीजों को करने की कोशिश करते हैं (और आप करेंगे) कि वे बहुत आसानी से समर्थन नहीं करते हैं। OpenGL 1.1 सिर्फ कठिन तरीका नहीं है - यदि आप कुछ परिणाम प्राप्त करना चाहते हैं तो यह अक्सर असंभव तरीका है।


यह मेरे लिए होता है कि मुझे एक उदाहरण जोड़ना चाहिए कि 1.1 अक्सर असंभव क्यों है। एक ऐसा जो आसानी से 1.1 कार्यक्षमता से संबंधित हो सकता है, वह है कई मिश्रण पास। क्योंकि आपके पास कोई FBOs नहीं है और आप घटक घटकों के प्रति 8 बिट्स तक सीमित हैं, आप पाएंगे कि जैसे ही ब्लॉक्स पास होता है आप सटीक खोना शुरू कर देंगे। 3/4/5 पास का उपयोग करें और अंतिम परिणाम 16-बिट या 8-बिट ग्राफिक्स की तरह (या इससे भी बदतर) दिखने लगेगा। फिर भी 1.1 स्तर के सेट के साथ उच्च स्तर के प्रभाव (मूल मल्टीटेक्स्चर एक होगा जिसे हम सभी परिचित हैं) अनुकरण करने के लिए कई पास की आवश्यकता होती है।
मैक्सिमस मिनिमस

यहां तक ​​कि इंटेल एचडी ग्राफिक्स (सैंडी / आइवी ब्रिज) केवल ओपनजीएल 3.1 का समर्थन करता है, और यह एक वर्ष पुराना है। यह नीचे आता है कि क्या आप सस्ते (या कम-शक्ति) लैपटॉप का समर्थन करना चाहते हैं।
स्टीव हॉवर्ड

2
@SteveHoward: Intel HD ग्राफिक्स OpenGL 4 का समर्थन कर सकता है। स्रोत
Janus Troelsen

मेरी टिप्पणी पोस्ट करने के लगभग 3 महीने बाद से वह लेख।
स्टीव हॉवर्ड

1

सबसे पहले OpenGL 1.1 सामान प्रदर्शन सूचियों की तरह अभी भी एक नए संदर्भ में काम करेगा बशर्ते आपके पास संगतता प्रोफ़ाइल (जो आमतौर पर मामला है)। एकमात्र समस्या यह है कि यदि आप OpenGL ES को पोर्ट करने की अपेक्षा करते हैं, तो कंसोल विशिष्ट ग्राफिक लाइब्रेरी में से एक (वे आमतौर पर OpenGL ES के समान OpenGL से नीचे छीन लिए जाते हैं) या यहां तक ​​कि WebGL (जिसके लिए वैसे भी काफी काम करने की आवश्यकता होगी)।

व्यक्तिगत रूप से मैं वर्टेक्स / टुकड़ा shaders और VBO's का उपयोग करने की सलाह दूंगा। वे अब काफी लंबे समय से हैं और शानदार प्रदर्शन में सुधार कर रहे हैं। यदि आप किसी कक्षा में फ़ंक्शन्स को लपेटते हैं तो आप शायद एक साधारण गिरावट भी प्रदान कर सकते हैं।

आप वर्टेक्स एरे ऑब्जेक्ट्स जैसी चीजों का अनुकरण करने में भी सक्षम हो सकते हैं।


0

5-ish पुराने हार्डवेयर के साथ, कुछ लोग अभी भी XP का उपयोग कर रहे हैं। और इसका मतलब है कि आप DirectX 10 या OpenGL 3 के साथ भी कोड नहीं कर सकते हैं। और OpenGL 3 में बहुत सारी विशेषताएं हैं जिन्हें आप वास्तव में लाभान्वित करेंगे, जैसे कि फ्रेमबफ़र और जैसे। ईमानदारी से, मैं आपके सिस्टम की आवश्यकताओं को थोड़ा बढ़ा दूंगा ताकि आप उन सुविधाओं को शामिल कर सकें।


8
-1: "5-वर्ष पुराने हार्डवेयर के साथ, कुछ लोग अभी भी XP का उपयोग कर रहे हैं। और इसका मतलब है कि आप डायरेक्टएक्स 10 या ओपनजीएल 3 के साथ भी कोड नहीं कर सकते हैं।" सच नहीं। OpenGL 3.x XP में ठीक चलता है । API / ड्राइवर कारणों से यह केवल XPD10 ​​है जो XP से प्रतिबंधित है। इसका हार्डवेयर से कोई लेना-देना नहीं है।
निकोल बोलस

0

3 डी सॉफ्टवेयर के लिए एक "बेसलाइन" ग्राफिक्स एपीआई संस्करण और एक "नवीनतम और सबसे बड़ा" एपीआई संस्करण दोनों के लिए कोड पथ होना आम है।

कॉमन बेसलाइन ग्राफिक्स संस्करण डी 3 डी 9 और ओपन 2 जीएल / जीएलएसएल 120 हैं .. जो दोनों उल्लेखनीय रूप से लापता ज्यामिति शेड हैं क्योंकि पुराने हार्डवेयर उनका समर्थन नहीं करते हैं।

एक अन्य आधारभूत विकल्प एएनजीएलई है, जो जीएलईएस 2.0 प्लस ईजीएल है जो डी 3 डी 9, डेस्कटॉप ओपनजीएल और मोबाइल जीएलआर 2.0 पर चलता है। यह क्रोम और फ़ायरफ़ॉक्स में Google क्रोम और वेबलॉग का बैक एंड है।

http://code.google.com/p/angleproject/

आपके द्वारा चुने गए "नवीनतम और सबसे बड़े" संस्करण के लिए, यह अधिक चुनौतीपूर्ण है। जितने हालिया आपी और हार्डवेयर को आप टारगेट करते हैं, उतने बेहतर दिखने वाले फीचर्स आप सपोर्ट कर सकते हैं - लेकिन केवल लेटेस्ट और सबसे बड़े हार्डवेयर पर।

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