कंप्यूटर निम्नतम स्तर पर स्क्रीन पर कुछ भी कैसे आकर्षित करता है (X11 जैसे बाहरी पुस्तकालयों के बारे में कुछ भी नहीं)? क्या असेंबली कमांड होने चाहिए जो ऐसा करते हैं? सीपीयू नियंत्रण स्क्रीन पर क्या दिखाई देता है?कंप्यूटर कैसे स्क्रीन खींचता है?
उत्तर
आमतौर पर आपके वीडियो कार्ड में frame buffer नामक स्मृति का एक क्षेत्र होता है। वहां एक मान लिखना मतलब है पिक्सेल के रंग मान को स्थापित करना।
आप 2 डी सरणी जैसे फ्रेम बफर पर विचार कर सकते हैं, जहां प्रत्येक बिट स्क्रीन पर पिक्सेल का प्रतिनिधित्व करती है। रंगों का प्रतिनिधित्व करने के लिए बफर के विभिन्न स्तरों का उपयोग किया जाता है। आज एक आम फ्रेम बफर में 24 स्तर (प्रत्येक आरजीबी रंग घटक के लिए 8) है और 2^24 संभावित रंगों की परिभाषा की अनुमति देता है।
आजकल आम तौर पर फ्रेम बफर तक पहुंच जीपीयू के माध्यम से छिद्रों के मुद्दों के लिए होती है: भले ही सीपीयू के लिए यह कार्य करना संभव हो, यह काफी महंगा है।
मूल रूप से यह हार्डड्राइव से पढ़ता है, या ध्वनि प्रभाव बजाता है।
विशिष्ट मेमोरी पतों पर कुछ डेटा लिखकर जो मेमोरी कंट्रोलर द्वारा प्रश्न में बाहरी हार्डवेयर (मैडयू या इन मामलों में साउंड कार्ड) में मैप किए गए हैं। जब हार्डवेयर उन लिखता है, तो यह क्या करना है इसके बारे में निर्देश के रूप में लिखे गए डेटा को व्याख्या करता है।
सीपीयू वास्तव में बाकी सिस्टम से अलग है। यह वास्तव में मेमोरी बस के बारे में जानता है। यह उस बस पर डेटा पढ़ और लिख सकता है, और यह मूल रूप से यह है। इनमें से कुछ पढ़ते हैं/लिखते हैं स्मृति, और अन्य को विभिन्न हार्डवेयर के नियंत्रण रजिस्टरों या डिवाइस की स्मृति में मैप किया जा सकता है यदि ऐसा मौजूद है, तो CPU को अन्य उपकरणों के साथ संवाद करने की अनुमति मिलती है।
एक आधुनिक जीपीयू की अपनी समर्पित रैम है, जिसमें यह डेटा लोड कर सकता है। तो सीपीयू जीपीयू को निर्देश भेजता है, यह निर्दिष्ट करता है कि मुख्य मेमोरी में यह स्क्रीन सामग्री उत्पन्न करने के लिए उपयोग किए जाने वाले डेटा को ढूंढ सकता है और इसके साथ क्या करना है। फिर जीपीयू उस डेटा को मुख्य मेमोरी से अपनी रैम में लोड करता है, जहां यह आवश्यक फ्रेम ट्रांसफॉर्मेशन और कंप्यूटेशंस करता है, इसे अपने फ्रेम बफर में लिखने से पहले, जो मॉन्टिटर लगातार पढ़ रहा है।
कहीं भी एक स्मृति है जो वीडियो स्क्रीन को समर्पित है। स्क्रीन पर प्रत्येक पिक्सेल में स्मृति की एक निश्चित राशि होती है। पैलेट और काले और सफेद जैसे ऐतिहासिक समाधानों से बचने के लिए, आमतौर पर लाल रंग के कुछ बिट्स, नीले रंग के कुछ बिट और कुछ हरे रंग के होते हैं। जब उन रंगों को जोड़ा जाता है तो आप सफेद सहित सबकुछ प्राप्त कर सकते हैं (मुझे पता है कि वे उदाहरण के लिए पेंट के साथ उपयोग किए जाने वाले प्राथमिक रंग नहीं हैं, चिंता न करें यह काम करता है)। आम तौर पर आपको 24 बिट रंग मिलेगा, जो कि 8 बिट्स, लाल बाइट, लाल रंग का एक बाइट और नीले रंग का बाइट, और मेमोरी वायरस इत्यादि का प्रबंधन करना आसान है।
वीडियो हार्डवेयर लगातार इसे पढ़ रहा है मेमोरी और मॉनीटर को सिग्नल भेजने के लिए जो भी तकनीक का उपयोग करना है, जो अनिवार्य रूप से इसे एक विशेष पिक्सेल के लिए प्रकाश देने के लिए लाल, हरे और नीले रंग की मात्रा बताता है, जो लगातार अद्यतित जानकारी के साथ स्क्रीन स्कैन करता है।
इस मेमोरी का उपयोग करने के लिए कुछ सामान्य तकनीकों को या तो दोहरी पोर्टेड नामक कुछ का उपयोग करना है, जहां दो इकाइयां स्मृति को पढ़ने/लिखने में सक्षम हैं। या दो यादें रखने और उन्हें स्वैप करने के लिए। किसी भी मामले में एक और इकाई, एक प्रोसेसर, या तो सीपीयू स्वयं, या वीडियो कार्ड/चिप में इन दिनों कई छोटे ग्राफिक्स प्रोसेसर हैं। किसी भी मामले में कुछ सॉफ़्टवेयर चलता है और ये सभी पिक्सेल के स्थान और रंग की गणना करते हैं और उन्हें स्मृति स्मृति के वीडियो/मॉनीटर पक्ष के उपयोग के तंत्र के आधार पर वीडियो मेमोरी में लिखते हैं, जब यह समझ में आता है तो स्मृति लेता है।आप स्क्रीन पर एक पास पर दिखाने के लिए टाइप किए गए अक्षरों में से कुछ पिक्सल नहीं चाहते हैं, फिर बाकी के पास अगले पास दिखाई दें, उपयोगकर्ता को नोटिस करने के लिए एक झिलमिलाहट हो सकती है।
वीडियो मेमोरी आमतौर पर सिस्टम मेमोरी की तरह मैप की जाती है, प्रोसेसर संभवतः उसी वीडियो का उपयोग करेगा जो गैर-वीडियो, सिस्टम, मेमोरी तक पहुंचने के लिए उपयोग करता है। निश्चित रूप से जीपीयू हो सकता है, लेकिन एक सीपीयू में परिधीय विशिष्ट निर्देश, यूआर्ट, जीपीओ, वीडियो, यूएसबी, स्टोरेज इत्यादि नहीं होते हैं। परिधीय आमतौर पर सीपीयू की मेमोरी स्पेस में कुछ पतों के रूप में मैप किए जाते हैं और सामान्य मेमोरी रीड/राइट निर्देशों का उपयोग किया जाता है ।
विशेष प्रकार के एल्गोरिदम के कारण, और अधिक महत्वपूर्ण बात यह है कि वीडियो गेम के लिए आवश्यक गणनाओं की संख्या बहुत अधिक है, वीडियो कार्ड कई, कई, विशेष, सरल, ग्राफिक्स प्रोसेसर, इन शक्तियों, कल, आज या कल का उपयोग कर सकते हैं प्रदर्शन या आकार या शक्ति या अन्य कारणों के लिए वीडियो मेमोरी विशिष्ट निर्देश। संभवतः फ्रेमबफर मेमोरी होने का मॉडल नहीं है, एक मेमोरी जिसमें स्क्रीन पिक्सेल के लायक स्क्रीन हैं, जो कि वीडियो हार्डवेयर मॉनिटर को भेजने के लिए सिग्नल बनाने के लिए उपयोग करता है ताकि वह स्क्रीन खींच सके।
वर्तमान सिस्टम के लिए सच है, मुझे पता है, लेकिन कुछ पुराने लोगों में बैकिंग फ्रेम बफर नहीं थे। :-) –
Thats क्यों मैंने कहा "ऐतिहासिक समाधान से परहेज", मैंने बिंदु पर रहने के लिए कड़ी मेहनत की कोशिश की और उन तरीकों से न पहुंचें जिनके पास कुछ प्रकार के फ्रेम बफर या यहां तक कि फ्रेम फ्रेम वाले मामले भी नहीं हैं। मुझे लगता है कि मुख्य सवाल वहां असेंबली निर्देश थे (शायद ही कभी), यदि नहीं तो क्या (स्मृति अधिकांश चीजों की तरह मैप किया गया)। एक मजेदार समुदाय प्रकार का सवाल हो सकता है, कंप्यूटर वीडियो/ग्राफिक्स को लागू करने के लिए फ्रेम बफर के अलावा अन्य समाधान का उपयोग किया गया है। –
मैं वास्तव में बस एक वर्तमान (उत्पादन में) प्रणाली में भाग गया जो बैकिंग फ्रेम बफर का उपयोग नहीं करता है। प्रोपेलर आधारित "हाइड्रा"! –
सीपीयू जीपीयू नहीं करता है। –
@Ash: ऐसा लगता है कि एक समर्पित जीपीयू है। – delnan
http://fgiesen.wordpress.com/category/graphics-pipeline/page/2/ रुचि का हो सकता है। – user786653