2011-11-08 14 views
9

संभव डुप्लिकेट:
OpenGL 4.1 vs 3.1+ओपनजीएल 3.x और 4.X के बीच अंतर?

वेब पर कुछ पृष्ठों पढ़ना, मैं OpneGL के दोनों संस्करणों के लिए सूचीबद्ध एक ही कोड उदाहरण मिल गया। मैं दो प्रयोग प्रोग्राम फंक्शन पाइपलाइनों को जानता हूं, पिछले संस्करणों के विपरीत, लेकिन दोनों के बीच प्रमुख अंतर क्या हैं? आप दूसरे पर एक का उपयोग क्यों करेंगे?

उत्तर

36

ओपनजीएल प्रमुख संस्करण संख्या प्रभावी रूप से हार्डवेयर स्तरों का प्रतिनिधित्व करती है, जैसे डी 3 डी प्रमुख संस्करण संख्याएं। जीएल 2.x डीएक्स 9 हार्डवेयर का प्रतिनिधित्व करता है। जीएल 3.x डीएक्स 10-वर्ग हार्डवेयर का प्रतिनिधित्व करता है। और इसलिए जीएल 4.x डीएक्स 11-वर्ग हार्डवेयर का प्रतिनिधित्व करता है।

जीएल 4.x में पेश की गई सभी सुविधाएं हार्डवेयर-विशिष्ट नहीं हैं, हालांकि। कुछ एपीआई सुविधा और सफाई सुविधाओं हैं। ये निम्न-स्तर के हार्डवेयर के एक्सटेंशन के रूप में उपलब्ध हैं, और एनवीआईडीआईए और एएमडी के ड्राइवर उन्हें प्रदान करते हैं। इनमें से सबसे बड़ा program separation है, जो कि कुछ GLSL को लंबे समय के लिए आवश्यक है।

जीएल 4.x द्वारा प्रस्तुत वास्तविक हार्डवेयर सुविधाओं के संदर्भ में जो 3.x में उपलब्ध नहीं हैं, यह विशाल या गेम-बदलना नहीं है। यह निश्चित रूप से महत्वपूर्ण है, लेकिन धरती पर नहीं चल रहा है। आप OpenGL Wiki पर संस्करण द्वारा जीएल सुविधाओं का एक विस्तृत टूटना पा सकते हैं।

Image load/store और atomic counters, शायद सबसे बड़ी लोगों को (इस shader storage buffers भी शामिल है) है, हालांकि एक साथ कम से कम विज्ञापित। शेडर्स को छवियों और बफर से सीधे लिखना/पढ़ना पड़ता है, हालांकि ऐसा करने के बारे में a lot of caveats and synchronization issues to understand हैं।

जीएल 4.3 जोड़ा गया compute shaders, जो उपरोक्त के साथ मिलकर ओपनसीएल/ओपनजीएल इंटरऑप के दर्द के बिना कम्प्यूटेशनल कार्यों को करने की अनुमति देता है।

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

Subroutines एक दिलचस्प लेकिन अक्सर अनदेखा विशेषता है। असल में, आप वर्दी जैसे शेडर प्रोग्राम में सबराउटिन संलग्न कर सकते हैं। तो आप एक ही मूल प्रोग्राम का उपयोग कर सकते हैं जो एक प्रकाश समारोह चलाएगा, लेकिन आप कार्यक्रम को बदले बिना प्रकाश कार्यों को स्वैप कर सकते हैं। मूल कार्यक्रम बनावट लाएगा, यह पता लगाएगा कि प्रसार/specular/आदि सामग्री पैरामीटर क्या हैं, सामान्य और प्रकाश पैरामीटर निर्धारित करते हैं, और subroutine को पास करते हैं। आपके पास त्वरित और सरल लैम्बर्टियन फैलाव से पूरी तरह से कुक-टोरेंस (हालांकि आपको कुछ और भौतिक पैरामीटर की आवश्यकता होगी) से प्रकाश की सबराउटिन की एक विस्तृत विविधता हो सकती है।

+2

यह उत्तर + 5 ^^ से अधिक योग्य है। ओपनजीएल पर आपकी पुस्तक वास्तव में बहुत अच्छी है, भले ही नेविगेशन इतना है। – Korchkidu

+0

@ कोर्किकिडू: क्या पुस्तक? – ssc

+0

आंतरिक परिवर्तनों के अलावा, क्या मैं वास्तव में अंतर को _see_ कर सकता हूं? उदाहरण के लिए, जब मैं एक गेम या 3 डी डेमो को बारीकी से देखता हूं, तो क्या उन परिवर्तनों में कुछ ऐसा होता है जो _looks_ बेहतर होता है? – ssc

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