2011-09-10 12 views
10

मेरे पास ग्राफिक्स प्रोग्रामिंग के साथ अनुभव पर कोई हाथ नहीं है। जब मैं ग्राफिक्स प्रोग्रामिंग के बारे में पढ़ रहा था तो मुझे यह संदेह मिला।विंडोज़ पर, ओपनजीएल डायरेक्टएक्स से कैसे भिन्न होता है?

जो मैं समझता हूं, क्योंकि विंडोज ने प्रत्यक्ष हार्डवेयर पहुंच की तरह डॉस की पेशकश नहीं की थी, डायरेक्टएक्स बनाया गया था। इसका मतलब है कि डायरेक्टएक्स प्रत्यक्ष (आईएसएच) हार्डवेयर पहुंच प्राप्त करने का एकमात्र निश्चित तरीका है। क्या मै गलत हु?

यदि मैं गलत नहीं हूं, तो OpenGL को या तो DirectX स्वयं या DirectX के शीर्ष पर लागू किया जाना चाहिए।

तो इसका मतलब यह नहीं है कि विंडोज ओपनजीएल वास्तव में डायरेक्टएक्स है?

कृपया ध्यान दें कि मेरे संदेह क्या शीर्षक कहते हैं, वास्तव में तक ही सीमित है, और मुझे कोई दिलचस्पी क्यों अन्य आदि एक से बेहतर है नहीं कर रहा हूँ

उत्तर

22

जो मैं समझता हूं, क्योंकि विंडोज ने प्रत्यक्ष हार्डवेयर पहुंच की तरह डॉस की पेशकश नहीं की थी, डायरेक्ट एक्स बनाया गया था।

आप सही हैं कि विंडोज ने प्रत्यक्ष हार्डवेयर पहुंच की तरह डॉस की पेशकश नहीं की है। वास्तव में स्मृति सुरक्षा के साथ कोई ऑपरेटिंग सिस्टम नहीं करता है।

और हां, डायरेक्टएक्स को एपीआई को कुछ प्रकार के हार्डवेयर तक त्वरित पहुंच के लिए प्रदान करने के लिए बनाया गया था। डायरेक्टएक्स एपीआई त्वरित हार्डवेयर पहुंच के लिए, (एक और केवल) एक नहीं है।

इसका मतलब है कि डायरेक्ट एक्स प्रत्यक्ष (आईएसएच) हार्डवेयर पहुंच प्राप्त करने का एकमात्र निश्चित तरीका है। क्या मै गलत हु? क्योंकि कुछ भी नहीं और कोई भी त्वरित हार्डवेयर के उपयोग के लिए एक और ट्रैक को लागू करने से रोकता है

आप गलत हैं। हार्डवेयर तक पहुंच के लिए जिम्मेदार सॉफ़्टवेयर के टुकड़े ड्राइवर कहा जाता है। ड्राइवर्स निजीकृत मोड में चलते हैं, जिसका अर्थ है, पता स्थान सुरक्षा उन पर लागू नहीं होती है। ऐसा इसलिए है, क्योंकि ड्राइवर हार्डवेयर के साथ संवाद करने में सक्षम होना चाहिए।

ड्राइवर्स नियमित कार्यक्रमों के साथ संवाद करते हैं, तथाकथित उपयोगकर्ता स्पेस एपीआई के माध्यम से। एपीआई मानकीकृत किया जा सकता है, तो कड़ाई से निर्दिष्ट किया जा सकता है या वे पूरी तरह से propritary हो सकता है।

डायरेक्टएक्स एक निर्दिष्ट एपीआई है, विनिर्देश माइक्रोसॉफ्ट द्वारा लिखा गया था।

ओपनजीएल इसी तरह से एक एपीआई है, लेकिन एक इकाई द्वारा निर्दिष्ट होने के बजाय यह कई योगदानकर्ताओं के सहयोग में मानकीकृत कुछ रूप में है।

एक प्रोप्रायटरी एपीआई के लिए एक उदाहरण 3Dfx द्वारा ग्लाइड था, जो बड़े हिस्सों में ओपनजीएल द्वारा प्रेरित था। वास्तव में 3xfx/ग्लाइड सिस्टम पर काम करने के लिए हाफ-लाइफ 1 इंजन के लिए आवश्यक ओपनजीएल के सबसेट को कार्यान्वित करने के लिए "मिनीग्ल" नामक एक संगतता रैपर होता है।

जीपीयू विक्रेताओं के ड्राइवर डेवलपर्स एपीआई के विनिर्देशों का पालन करते हैं, डायरेक्टएक्स, ओपनजीएल या कुछ मालिकाना इंटरफ़ेस के लिए ड्राइवर लिखते हैं। उनमें से प्रत्येक एपीआई ड्राइवर को और इस प्रकार हार्डवेयर तक पहुंच प्रदान करता है। और एक ही संसाधन के लिए कई एपीआई हो सकते हैं। एक ड्राइवर डायरेक्टएक्स 3 डी, ओपनजीएल और समानांतर में जो कुछ भी लागू कर सकता है और उन्हें सभी को उपयोगकर्ता स्थान प्रदान कर सकता है।

तो नहीं, यदि GPU ड्राइवर के साथ शिपिंग हो तो OpenGL DirectX के शीर्ष पर नहीं बनाया गया है। डायरेक्टएक्स के शीर्ष पर बनाए गए ओपनजीएल-1.4 अनुकरण के साथ विंडोज विस्टा और ऊपर जहाज, लेकिन यह शेडर्स, वर्टेक्स बफर ऑब्जेक्ट्स और अन्य सभी सीटी और घंटी का समर्थन नहीं करता है। जैसे ही आप OpenGL समर्थन के साथ एक GPU ड्राइवर स्थापित करते हैं, यह ओपनजीएल-1.4 अनुकरण को वास्तविक स्तर के कार्यान्वयन के साथ पूरी तरह से बदल देता है।

+0

पर किसी भी जटिलता के ओपनजीएल प्रोग्राम को आजमाएं और चलाएं बहुत ही जानकारीपूर्ण उत्तर के लिए धन्यवाद। – Ken

+0

+1 अन्य के अलावा एक सटीक उत्तर प्रदान करने के लिए, जो कि गलत नहीं बल्कि अपूर्ण उत्तरों के अलावा है। –

+0

एक तरफ के रूप में: minigl भूकंप 1 इंजन के लिए था, जो एचएल 1 का उपयोग किया गया ... – Goz

3

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

+0

उत्तर के लिए धन्यवाद। – Ken

2

समस्या यह है कि प्रत्यक्ष हार्डवेयर पहुंच और कोई सुविधाजनक सार परत नहीं थी। सॉफ़्टवेयर विक्रेता प्रत्येक नए कार्ड के लिए अपना पूरा समय लिखने का समर्थन नहीं करना चाहते हैं, इसलिए वे माइक्रोसॉफ्ट को अमूर्तता को लागू करने के लिए प्रेरित करते हैं।

विकल्प ओपनजीएल था या एक नई परत का आविष्कार किया, विभिन्न कारणों के बाद के कारणों का नेतृत्व किया।

Vista + ओपनजीएल को डायरेक्टएक्स में परिवर्तित कर सकता है, और इसके विपरीत वाइन डायरेक्टएक्स को ओपनजीएल में परिवर्तित कर सकता है।

+0

मुझे पहली वाक्य समझ में नहीं आती है। 16 बिट इम्यूलेशन मोड के माध्यम से, एक्सेस कैसे संभव था? – Ken

+0

@ केन डायरेक्टएक्स विंडोज 95 के साथ दिखाई दिया, यानी जब सीमित स्मृति सुरक्षा थी। आपके पास अक्सर मिनी-ड्राइवर जैसे [मिनीजीएलएक्स] (http://en.wikipedia.org/wiki/MiniGLX) होते हैं। –

+0

आह ठीक है। उसके लिए धन्यवाद। – Ken

2

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

विंडोज़ सीधे डायरेक्टएक्स का समर्थन करता है, यह ओएसजी का सुंदर प्रदर्शन प्रभावों के लिए आवश्यक है - ओपनजीएल का उनका समर्थन अधिक सीमित है, वे केवल v1.1 का समर्थन करते हैं (हम अब संस्करण 4 पर हैं) ताकि आपको कुछ भी उपयोगी हो सके कुछ अतिरिक्त सीमाओं (जैसे glew) या ग्राफिक्स कार्ड निर्माता ओपनजीएल एसडीके का उपयोग करने के लिए।

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

अभ्यास में विंडोज़ पर केवल ओपनजीएल ड्राइवर जो पूरी तरह से बेकार नहीं हैं, एनवीडिया - इतने उच्च प्रदर्शन विंडोज़ पर ओपनजीएल ऐप्स को बहुत अधिक आवश्यकता होती है एनवीडिया कार्ड इसका मतलब है कि विंडोज़ पर ओपनजीएल प्रोग्राम करना आसान है - आप बस एनवीडिया डॉक्स से चिपके रहते हैं।

+0

उत्तर के लिए धन्यवाद। – Ken

+0

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

+0

GLEW ओपनजीएल एआरबी_एक्सटी एक्सटेन्शन नहीं है लेकिन यह विंडोज़ पर ओपनजीएल की क्षमताओं का विस्तार है। पीएस बस एक इंटेल एम्बेडेड ग्राफिक्स चिपसेट –

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