हमारे पास OpenGL और DirectX जैसे ग्राफिक्स फ्रेमवर्क क्यों हैं, जब गेम सीधे पिक्सेल खींच सकते हैं?


16

गेम्स और अन्य ग्राफिक रूप से सघन अनुप्रयोग OpenGL और DirectX जैसे फ्रेमवर्क का उपयोग करते हैं। इसके अलावा उन्हें पिक्सेल shader और DX12 जैसी सुविधाओं की आवश्यकता होती है।

लेकिन हमें इन सभी फ्रेमवर्क और GPU सुविधाओं की आवश्यकता क्यों होगी जब हम पिक्सेल द्वारा सब कुछ बस खींच सकते हैं?

सबसे पहले, खेल को एक तरह से संकलित करना होगा ताकि यह पिक्सेल द्वारा पिक्सेल खींचा जाए। यह गेम को निष्पादन योग्य बड़ा बनाने की संभावना है, लेकिन क्या यह तेजी से होगा और किसी भी 32-बिट रंग GPU (यहां तक ​​कि पुराने) पर काम करेगा?

मुझे पता है कि पहले 3 डी गेम पिक्सेल द्वारा पिक्सेल खींचे जाते थे, लेकिन अब वे ऐसा क्यों नहीं कर रहे हैं?


सामान्य तौर पर बहुत सी चीजों पर एक ऑपरेशन करना हर व्यक्ति पर व्यक्तिगत रूप से करने की तुलना में अधिक कुशल और सोचने में आसान होता है।
user541686

2
क्योंकि हर गेम को हर ग्राफिक्स कार्ड के लिए फिर से लिखना होगा। जब तक कि वे ग्राफिक्स कार्ड का उपयोग नहीं करते, लेकिन तब वे धीमे होते।
user253751

मुझे लगता है कि GPU कंपनियों को
Suici Doga

1
"लेकिन हमें इन सभी फ्रेमवर्क और GPU सुविधाओं की आवश्यकता क्यों होगी जब हम पिक्सेल द्वारा सब कुछ बस खींच सकते हैं?" इस तरह से यह अच्छे राजभाषा दिनों में किया गया था। वोल्फेंस्टीन 3 डी, डूम, ड्यूक नुकेम 3 डी, क्वेक और लेट '90 के अधिकांश अन्य गेम में शुद्ध सॉफ्टवेयर रेंडरिंग का इस्तेमाल किया गया (क्वेक ने ओपनजीएल रेंडरर को एक विकल्प के रूप में पेश किया)।
el.pescado

1
@MatthewRock आप मददगार नहीं हो रहे हैं। आप निश्चित रूप से एक डॉक कंटेनर के अंदर एक गेम के साथ एक ओएस बंडल कर सकते हैं और कंटेनर वितरित कर सकते हैं। इस तरह, उपयोगकर्ता को अपने डिस्ट्रो के लिए पुस्तकालय निर्भरता स्थापित करने की आवश्यकता नहीं है।
नवीन

जवाबों:


23

ऐसा होने के लिए गति सबसे सामान्य कारण है। वास्तव में आप वही कर सकते हैं जो आप प्रस्तावित करते हैं, यदि आप अपना खुद का ऑपरेटिंग सिस्टम बनाते हैं, तो इसका सिर्फ वास्तु संबंधी कारणों से बहुत धीमा होना है। तो यह धारणा कि इसका तेज थोड़ा त्रुटिपूर्ण है। यहां तक ​​कि अगर यह तेज होगा, तो यह विकास के मामले में कम कुशल होगा (जैसे कि काम के 10 गुना के लिए 1% की गति बढ़ाना)।

सीपीयू से ग्राफिक्स कार्ड पर डेटा की प्रतिलिपि बनाना अपेक्षाकृत धीमा ऑपरेशन है। जितना कम आप तेजी से अपने अद्यतन की गति की प्रतिलिपि बना सकते हैं। तो आदर्श रूप में आपके पास अधिकांश डेटा आपके जीपीयू पर होगा और केवल डेटा के छोटे हिस्से को अपडेट करेगा। 1920x1200 या उससे अधिक की तुलना में 320x200 पिक्सेल से अधिक की नकल के बीच अंतर की दुनिया है। जब पक्ष बढ़ता है, तो पिक्सेल की संख्या देखें जिसे आपको अपडेट करने की आवश्यकता है।

उदाहरण: विभिन्न स्थानों में वीडियो मेमोरी में मैन्युअल रूप से पिक्सेल कॉपी करने की तुलना में जीपीयू को छवि को 10 पिक्सेल स्थानांतरित करने के लिए कहना सस्ता है।

आपको एक एपीआई गर्त क्यों जाना है? केवल इसलिए कि यह आपका सिस्टम नहीं है। ऑपरेटिंग सिस्टम आपको सुरक्षा कारणों से जो कुछ भी करने की अनुमति नहीं दे सकता है। दूसरी बात यह है कि ऑपरेटिंग सिस्टम को हार्डवेयर को दूर करने की आवश्यकता होती है, यहां तक ​​कि ओएस चालक को कुछ सार प्रणाली, एक एपीआई को गर्त में रखने की बात कर रहा है यदि आप करेंगे।

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

पुनश्च: एक एपीआई यह अद्यतन करने के लिए असंभव नहीं है जैसे पुराने गेम ने किया था। यह सिर्फ अक्षम है कि सभी है। एपीआई मन के कारण नहीं, बल्कि यह अक्षम्य अवधि है।

PPS: यही कारण है कि वे वल्कन का रोल कर रहे हैं।


6
See the number of pixels you need to update grows exponetially when the sides grow.द्विघात रूप से, मुझे लगता है।
Cthulhu

"सीपीयू से ग्राफिक्स कार्ड पर डेटा की प्रतिलिपि बनाना अपेक्षाकृत धीमी कार्रवाई है।" यह सच है, लेकिन अप्रासंगिक है। 60 एफपीएस पर कुछ मिलियन पिक्सल पर नकल करना, यहां तक ​​कि मामूली पीसीआई-ई लिंक पर आसानी से प्राप्त होता है (इसे केवल प्रति सेकंड कुछ सौ मेगाबाइट की आवश्यकता होगी।)
कॉक्सी

2
@ pjc50 यह गलत नहीं है, लेकिन यह भी बिल्कुल सच नहीं है। एक बड़ी मात्रा में डेटा पर समानांतर में एक प्रोग्राम (आमतौर पर एक shader) चलाने के लिए एक GPU विशेष है। तो, आपको बहुत सारे डेटा पर समान संचालन करने की आवश्यकता है वास्तव में एक GPU की कंप्यूटिंग शक्ति का उपयोग करने के लिए। यदि आपका प्रोग्राम नहीं है, तो आप CPU पर प्रोग्राम को बेहतर ढंग से चला सकते हैं।
नीरो

2
एक्स22एक्स

1
आप प्रतिलिपि बनाने और आगे बढ़ने के बारे में बात करते हैं, लेकिन जो अधिक महत्वपूर्ण है वह वास्तविक छवि निर्माण है। आपको यह निर्धारित करना होगा कि कौन सी वस्तु किस बिंदु पर दिखाई देगी, किस तरह से रोशन होगी, धुएं आदि का क्या प्रभाव होगा, आदि इन कार्यों को तेजी से और समानांतर में करने के लिए जीपीयू अत्यधिक अनुकूलित हैं। एपीआई आम कार्यों को व्यक्त करना आसान बनाते हैं।
आईएमआईएल

15

किसी भी 32-बिट रंग GPU (यहां तक ​​कि पुराने) पर काम करते हैं?

यहाँ इतिहास का बिट: इस तरह से खेल पीसी पर किया गया था जब तक कि चित्रमय त्वरक 90 के दशक के मध्य में उपलब्ध होना शुरू नहीं हुआ था। यह वास्तव में सभी हार्डवेयर पर काम करता था, क्योंकि हार्डवेयर बहुत कुछ नहीं कर रहा था।

एक ग्राफिकल त्वरक विशेष हार्डवेयर और समानांतरवाद का उपयोग करके, सीपीयू की तुलना में पिक्सेल की ड्राइंग को काफी तेज कर सकता है। त्वरक में कई प्रोसेसर कोर होते हैं। एक डेस्कटॉप पीसी में उम्र के आधार पर 1-8 कोर होंगे। मेरे GTX970Ti ग्राफिक्स कार्ड में 1664 (एक हजार छह सौ चौंसठ) कोर हैं। यह स्पष्ट रूप से लंबे समय से पीसी को कच्ची गति के लिए धड़कता है।

हालांकि, त्वरक मानकीकृत नहीं हैं, और अक्सर अपनी गति को प्राप्त करने के लिए अजीब कंप्यूटर आर्किटेक्चर ट्रिक्स शामिल करते हैं। एक ऐसे खेल को लिखने के लिए जिसे कार्ड के विशिष्ट मेक और मॉडल के अनुरूप नहीं बनाया गया है, एक एपीआई की आवश्यकता है। और यही DirectX, GL और shader भाषाओं के लिए उपयोग किया जाता है। वास्तव में, shaders लेखन है एक प्रोग्राम है जो पिक्सेल सीधे ड्रॉ लिखने के लिए निकटतम बात है - यह सिर्फ इतना है कि कार्ड पिक्सेल प्रति एक समानांतर में आप के लिए है कि कार्यक्रम की एक हजार प्रतियां चलाया जाएगा, है।


मेरे लैपटॉप के APU में 256 shader cores @ 686MHZ है जबकि मेरे टैबलेट में 192 हैं।
Suici Doga

अरे, टाइटन एक्स में 5760 कोर हैं।
डैनियल

@ डैनियल क्या कोई गेम है जो टाइटन एक्स <30fps अल्ट्रा हाई पर जाता है। टाइटन एक्स बहुत शक्तिशाली है
Suici Doga


@ डैनियल उन खेलों के डेवलपर्स को लगभग 2-4 टाइटन एक्स कार्ड की आवश्यकता होनी चाहिए :)
सूकी डोगा

14

बस पूजा के जवाब में जोड़ने के लिए , चीजों को अभी भी पिक्सेल द्वारा खींचा जा रहा है। तुम सिर्फ एक शीर्ष shader / कोडांतरक / rasterizer का उपयोग कर पिक्सल पैदा कर रहे हैं, तो एक टुकड़ा shader का उपयोग कर उन्हें texturing और प्रकाश। यह सब 90 के दशक में सॉफ्टवेयर में किया गया था जब आपका वीडियो कार्ड ब्लिटर और फ्रेम बफर से बहुत अधिक नहीं था, लेकिन यह नरक के रूप में धीमा था। इसलिए आधुनिक जीपीयू का आविष्कार।

ड्राइंग मैथ्स जो हो रहा है वह मूल रूप से कयामत के दिनों में वापस आ गया था, लेकिन अब यह मुट्ठी भर सीपीयू कोर के बजाय सैकड़ों / हजारों शेयर्ड ALUs पर चल रहा है। मूल रूप से दृश्यों के पीछे GPU निर्देशों का एक ही सेट APIs मैप करता है। वे सिर्फ वहाँ हैं आप कई विक्रेता प्लेटफार्मों भर में g GPUly GPU विधानसभा की एक टन लिखने के लिए बंद करने के लिए।

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