2010-11-06 20 views
19

मैं बस उनके बारे में सीख रहा हूं, और इसे निराश कर रहा हूं कि उन्हें बहिष्कृत कर दिया गया है। क्या मुझे उन्हें सीखने में निवेश करना चाहिए? क्या मैं वर्तमान मॉडल के लिए कुछ उपयोगी सीखूंगा?ओपनजीएल 3.1 में डिस्प्ले सूचियों को बहिष्कृत क्यों किया गया था?

+0

"बहिष्कृत" और "हटाए गए" के बीच एक अंतर है। FYI करें। बहिष्कृत सामान आमतौर पर तुरंत हटाया नहीं जाता है। – cHao

+0

@cHao वे केवल कोर से हटा दिए गए हैं, लेकिन संगतता मोड में उपलब्ध हैं। तो वे पूरी तरह से हटा नहीं रहे हैं। – Calmarius

+0

@ कलमियस यह वही है जो * बहिष्कृत * जीएल में है। –

उत्तर

24

मुझे लगता है कि, हालांकि मैं गलत हो सकता हूं, क्योंकि अधिकांश उच्च प्रदर्शन ग्राफिक्स ऐप्स (अधिकतर गेम) बहुत अधिक इस्तेमाल किए गए वर्टेक्स बफर और जैसे (कार्ड के प्रदर्शन की हर बूंद को निचोड़ने के लिए) डिस्प्ले सूचियों (और यहां तक ​​कि अच्छी पुरानी ग्लवटेक्स कॉल) जैसी "बेवकूफ" वस्तुओं के बारे में चिंता करना बंद करने का दबाव था। आईएमएचओ, यह ओपनजीएल कोड लिखने के लिए सीखने वाले लोगों के लिए एक बड़ी बाधा प्रदान करता है, और (मेरे अपने उद्देश्यों के लिए) कुछ त्वरित, सुस्पष्ट और उचित रूप से अच्छा प्रदर्शन करने वाला कोड अपनाने में एक बड़ी बाधा है।

ध्यान दें कि इन सुविधाओं को 3.0 में बहिष्कृत किया गया था, और वास्तव में 3.1 में हटा दिया गया था (लेकिन अभी भी एआरबी एक्सटेंशन के माध्यम से संगतता प्रदान की गई है)। ओपनजीएल 3.2 में, उन्होंने इन सुविधाओं को 'संगतता' प्रोफ़ाइल में स्थानांतरित कर दिया जो ड्राइवर लेखकों के कार्यान्वयन के लिए वैकल्पिक है।

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

http://www.slideshare.net/Mark_Kilgard/opengl-32-and-more

स्लाइड # 32 के बारे में पर शुरू। मुझे इस पर अति/एएमडी का रुख नहीं पता, लेकिन मुझे लगता है कि यह समान होगा।

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

-मैट

+5

एएमडी जीएल 3 श्वेत पत्र (http://developer.amd.com/gpu_assets/GL3_WhitePaper.pdf) पर निम्नलिखित पाया गया: "एएमडी में वर्तमान में गैर-आगे संगत ओपनजीएल संदर्भों से इन बहिष्कृत और हटाए गए आइटमों में से किसी को हटाने की कोई योजना नहीं है एएमडी वर्तमान में कई कोड-बेस के बीच व्यापक उपयोग में सुविधाओं और इंटरफेस का समर्थन करने की योजना बना रहा है। " – Gretchen

+6

* "यह ओपनजीएल कोड लिखने के लिए सीखने वाले लोगों के लिए एक बड़ी बाधा प्रदान करता है, और (मेरे अपने उद्देश्यों के लिए) कुछ त्वरित, सुस्पष्ट और उचित रूप से अच्छा प्रदर्शन करने वाला कोड" * - ओपनजीएल को कम- स्तर ग्राफिक्स एपीआई, इसलिए "मेमोरी बफर ऑब्जेक्ट्स" और "एट्रिब्यूट पॉइंटर्स" के संदर्भ में बात करना उपयुक्त है। त्वरित कोड को छेड़छाड़ करने के लिए, इरलिच या ओग्रे या हॉर्डे 3 डी या शायद सिंडर जैसे ग्राफिक्स इंजन अधिक उपयुक्त हो सकते हैं। – Kos

+7

उस ने कहा, कोर ओपनजीएल 3 या 4 में त्वरित कोड को मारना * वह * कठिन नहीं है। 'Std :: vector' में कोष्ठक जोड़ना 'glvertex' कमांड से अधिक जटिल नहीं है, और शेडर्स' glLight' और 'glTextureEnv' से बहुत सरल हैं। वास्तव में कुछ बॉयलरप्लेट कोड को संभालने के लिए है, लेकिन इसमें से अधिकांश रैखिक बीजगणित है जो जीएलएम जैसी लाइब्रेरी के साथ सबसे अच्छा है। मैं कहता हूं: प्रदर्शन सूचियों को भूल जाओ, कोर ओपनजीएल के साथ जाएं। – Kos

0

क्योंकि VBOs (शिखर बफर वस्तुओं) और अधिक कुशल हैं और क्या कर सकते हैं सब कुछ प्रदर्शन सूचियों कर सकते हैं। वे वास्तव में कुछ और जटिल नहीं हैं, या तो, थोड़ा अलग। जब तक कि आप पुरानी शैली glBegin/glEnd सामान से पहले से अधिक परिचित नहीं हैं, तो आप शायद जाने से बफर के बारे में सीखने से सबसे अच्छे हैं।

+4

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

+0

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

+0

@ बाहबर: यह बिंदु के अलावा है। शायद वीएओ इसे लगभग करीब कर सकता है और शायद टुकड़े के भोजन की तुलना में एक छोटी संख्या में खो देता है लेकिन बड़ी तस्वीर को देखते हुए आधुनिक शेडर-आधारित पाइपलाइन पर जाने में बड़ी जीत होती है (दोनों perf। और लचीलापन में)। – legends2k

2

जबकि मैथ्यू हॉल का एक अच्छा जवाब है और अधिकांश चीजों को शामिल करता है, तो कुछ चीजें जो मैं जोड़ूंगा।

यदि आप देखें कि क्या हटाया गया है, तो आप देखेंगे कि यह बहुत से ग्राहक पक्ष और निश्चित कार्यक्षमता है। तो यह स्पष्ट है कि वे लोगों को क्लाइंट साइड केंद्रित कोड से दूर ले जाने की कोशिश कर रहे हैं और लोगों को इसके बजाय जीपीयू पर सर्वर की हर चीज संभव है।

जब उपयोग करने के लिए कौन सा संदर्भ आता है, तो यह आपके ऊपर है। हालांकि यदि प्रदर्शन एक प्रमुख चिंतित है तो 3.x शायद जाने का रास्ता है। मैं व्यक्तिगत रूप से निश्चित रूप से opengl 3.x सीखना चाहता हूं, लेकिन मुझे संदेह है कि मैं 1.x/2.x छोड़ दूंगा। 1.x या 2.x संदर्भ में उपलब्ध होने के साथ एक त्वरित ऐप को एक साथ रखना इतना आसान है।

आप क्या बहिष्कार किया गया है की एक सूची चाहते हैं, 3.0 specification डाउनलोड करने और "विरोध मॉडल"

4

प्रदर्शन सूचियों हटा दिया गया, के तहत देखें क्योंकि ओपन के साथ 3 + सभी शीर्ष, बनावट और प्रकाश व्यवस्था के डेटा पर जमा हो जाती ग्राफिक्स कार्ड, जिसे बनाए रखा मोड रेंडरिंग कहा जाता है (डेटा को बनाए रखा जाता है, जिससे आप प्रत्येक फ्रेम को कार्ड में वर्टेक्स डेटा भेजने के बजाय, जाल खींचने के लिए कार्ड को एक ही कमांड भेज सकते हैं)।कंप्यूटर ग्राफिक्स में एक बड़ी बाधा रैम और gpuRAM के बीच डेटा बैंडविड्थ है। एक बार मेष उत्पन्न करके, और उस डेटा को बनाए रखने के द्वारा, हम इसे समरूप ट्रांसफॉर्म मैट्रिस का उपयोग करके बदल सकते हैं, और इसे आसानी से खींच सकते हैं। यह लंबे समय तक लोडिंग समय की कमी के साथ प्रभावी रूप से बाधा को कम कर देता है। तत्काल मोड, हालांकि (प्री 3.0) ग्राफिक्स बैंडविड्थ की भारी मात्रा का उपयोग करता है ताकि प्रत्येक फ्रेम, पूर्व-रूपांतरित, पुनर्मूल्यांकन मानक आदि के साथ वर्टेक्स डेटा भेजने के लिए इस दृष्टिकोण के साथ समस्याएं दो गुना हैं: 1) अत्यधिक बैंडविड्थ उपयोग, और बहुत अधिक जीपीयू निष्क्रिय समय। 2) जीपीयू

पर सरल समाधान, गणना के लिए सरल समाधान, गणना के लिए सीपीयू समय का अत्यधिक उपयोग 100+ कोर पर समानांतर में किया जा सकता है।

बनाए रखा मोड के साथ, प्रदर्शन सूचियां अब आवश्यक नहीं हैं। इसलिए कोर प्रोफाइल से उनकी हटाने।

तत्काल मोड कंप्यूटर ग्राफिक्स के सिद्धांत को सीखने के लिए अभी भी बहुत अच्छा है। (और बूट करने के लिए यह मज़ेदार है) यह अधिकतम संभव प्रदर्शन के मामले में बस पीड़ित है।

वीबीओ & वीएओ पहले, कम अंतर्ज्ञानी हो सकता है, लेकिन गति के मामले में, यह बहुत बेहतर है।

इंटरनेट पर ओपनगल 3.0 ट्यूटोरियल को समझने में कई आसान हैं। एक बार आपके पास OpenGL 2.0 डाउन हो जाने पर, आपको 3.0+ पर जाने पर विचार करना चाहिए, क्योंकि यह आपको बहुत तेज 3 डी ग्राफिक्स एप्लिकेशन बनाने की अनुमति देता है।

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