बिट ब्लिट: Difference between revisions

From Vigyanwiki
(Created page with "{{one source|date=December 2017}} बिट ब्लिट (जिसे BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt आदि भी लिखा जाता है, जो '...")
 
No edit summary
Line 1: Line 1:
{{one source|date=December 2017}}
टिल तिल (जिसे BITBLT, BIT BLT, BITBLT, Bit BLT, Bit BIT आदि के रूप में भी लिखा जाता है, जो टिल खण्ड स्थानातरण के लिए संयोगित किया जाता है) आँकड़ा प्रचालन है जो सामान्यतः [[कंप्यूटर चित्रलेख]] में उपयोग किया जाता है जिसमें अनेक [[बिटमैप]] का उपयोग करके निश्चित टेबल बाइनरी प्रचालन में जोड़ा जाता है।.<ref name="Sanchez"/>
बिट ब्लिट (जिसे BITBLT, BIT BLT, BitBLT, Bit BLT, Bit Blt आदि भी लिखा जाता है, जो ''बिट ब्लॉक ट्रांसफर'' के लिए है) एक डेटा ऑपरेशन है जो आमतौर पर [[कंप्यूटर चित्रलेख]] में उपयोग किया जाता है जिसमें कई [[बिटमैप]]्स को एक का उपयोग करके एक में जोड़ा जाता है। ''Truth_table#Binary_operations''.<ref name="Sanchez"/>


ऑपरेशन में कम से कम दो बिटमैप शामिल होते हैं: एक स्रोत (या अग्रभूमि) और एक गंतव्य (या पृष्ठभूमि), और संभवतः एक तीसरा जिसे [[मुक्त]] [[स्टैंसिल]] कहा जाता है। परिणाम चौथे बिटमैप पर लिखा जा सकता है, हालांकि अक्सर यह गंतव्य को बदल देता है। निर्दिष्ट रास्टर ऑपरेशन (आरओपी) के अनुसार प्रत्येक के पिक्सल को बिटवाइज़ संयोजित किया जाता है और फिर परिणाम को गंतव्य पर लिखा जाता है। आरओपी अनिवार्य रूप से एक [[बूलियन तर्क]] फॉर्मूला है। सबसे स्पष्ट आरओपी स्रोत के साथ गंतव्य को अधिलेखित कर देता है। अन्य आरओपी में लॉजिकल संयोजन, [[तार्किक संयोजन]], एक्सओआर, और [[नकार]]ात्मक संचालन शामिल हो सकते हैं।<ref name="Sanchez">{{cite book|last=Sanchez|first=Julio |author2=Maria P. Canton|title=Software solutions for engineers and scientists |publisher=CRC Press|date=2007|pages=690|chapter=Displaying Bit-Mapped images|chapter-url=https://books.google.com/books?id=jtKc0k5BWA8C&pg=PA690}}</ref> कमोडोर [[अमिगा]] के ग्राफिक्स चिपसेट (और अन्य) तीन इनपुट के साथ 256 संभावित बूलियन कार्यों में से किसी का उपयोग करके तीन स्रोत बिटमैप्स को जोड़ सकते हैं।
प्रचालन में कम से कम दो बिटमैप सम्मलित होते हैं, स्रोत (या अग्रभूमि) और गंतव्य (या पृष्ठभूमि) और संभवतः तीसरा जिसे [[मुक्त]] [[स्टैंसिल]] कहा जाता है। इसके परिणाम स्वरुप इसे चौथे बिटमैप पर लिखा जा सकता है, चूंकि अधिकांशतः यह गंतव्य को परिवर्तित कर देता है। जिसके माध्यम से निर्दिष्ट रेखापुंज प्रचालन (आरओपी) के अनुसार प्रत्येक पिक्सल को बिटवाइज़ संयोजित किया जाता है और फिर परिणाम को गंतव्य पर लिखा जाता है। निर्दिष्ट रेखापुंज प्रचालन (आरओपी) अनिवार्य रूप से [[बूलियन तर्क]] का सूत्र है। सबसे स्पष्ट निर्दिष्ट रेखापुंज प्रचालन (आरओपी) स्रोत के साथ गंतव्य को अधिलेखित कर देता है। अन्य निर्दिष्ट रेखापुंज प्रचालन (आरओपी) में [[तार्किक संयोजन]], एक्सओआर, और [[नकार|नकारात्मक]] संचालन सम्मलित हो जाता हैं।<ref name="Sanchez">{{cite book|last=Sanchez|first=Julio |author2=Maria P. Canton|title=Software solutions for engineers and scientists |publisher=CRC Press|date=2007|pages=690|chapter=Displaying Bit-Mapped images|chapter-url=https://books.google.com/books?id=jtKc0k5BWA8C&pg=PA690}}</ref> कमोडोर [[अमिगा]] के ग्राफिक्स विस्तार और अन्य तीन इनपुट के साथ 256 संभावित बूलियन कार्यों में से किसी का उपयोग करके तीन स्रोत बिटमैप्स को जोड़ सकते हैं।


आधुनिक ग्राफ़िक्स सॉफ़्टवेयर ने लगभग पूरी तरह से बिटवाइज़ ऑपरेशंस को [[अल्फा रचना]] जैसे प्रभावों के लिए उपयोग किए जाने वाले अधिक सामान्य गणितीय ऑपरेशंस के साथ बदल दिया है। ऐसा इसलिए है क्योंकि रंग डिस्प्ले पर बिटवाइज़ ऑपरेशन आमतौर पर ऐसे परिणाम नहीं देते हैं जो रोशनी या स्याही के भौतिक संयोजन के समान होते हैं। कुछ सॉफ़्टवेयर अभी भी इंटरएक्टिव हाइलाइट आयतों या क्षेत्र की सीमाओं को आकर्षित करने के लिए XOR का उपयोग करते हैं; जब यह छवियों को रंगने के लिए किया जाता है, तो असामान्य परिणामी रंग आसानी से देखे जा सकते हैं।
आधुनिक ग्राफ़िक्स सॉफ़्टवेयर ने लगभग पूर्ण प्रकार से बिटवाइज़ प्रचालन को [[अल्फा रचना]] जैसे प्रभावों के लिए उपयोग किए जाने वाले अधिक सामान्य गणितीय प्रचालन के साथ परिवर्तित किया जाता है। सामान्यतः ऐसा इसलिए है क्योंकि रंग दृश्य पर बिटवाइज़ प्रचालन सामान्यतः ऐसे परिणाम नहीं देते हैं जो प्रकाशीय या स्याही के भौतिक संयोजन के समान होते हैं। चूँकि कुछ सॉफ़्टवेयर अभी भी परस्पर संवादात्मक हाइलाइट आयतों या क्षेत्र की सीमाओं को आकर्षित करने के लिए एक्सओआर का उपयोग करते हैं, जब यह छवियों को रंगने के लिए किया जाता है, तो असामान्य परिणामी रंग आसानी से देखे जा सकते हैं।


== उत्पत्ति ==
== उत्पत्ति ==
बिट-बाउंड्री ब्लॉक ट्रांसफर के लिए खड़े [[ज़ेरॉक्स ऑल्टो]] [[कंप्यूटर]] के लिए नाम BitBLT रूटीन से निकला है। [[डैन इंगल्स]], [[लैरी टेस्लर]], [[बॉब स्प्राउल]] और [[डायना मीरा]] ने स्मॉलटाक -72 सिस्टम के लिए नवंबर 1975 में [[ज़ेरॉक्स PARC]] में इस ऑपरेशन को प्रोग्राम किया। डैन इंगल्स ने बाद में [[माइक्रोकोड]] में एक नया डिज़ाइन किया गया संस्करण लागू किया।
बिट-बाउंड्री ब्लॉक ट्रांसफर के लिए खड़े [[ज़ेरॉक्स ऑल्टो]] [[कंप्यूटर]] के लिए नाम BitBLT रूटीन से निकला है। [[डैन इंगल्स]], [[लैरी टेस्लर]], [[बॉब स्प्राउल]] और [[डायना मीरा]] ने स्मॉलटाक -72 सिस्टम के लिए नवंबर 1975 में [[ज़ेरॉक्स PARC]] में इस प्रचालन को प्रोग्राम किया। डैन इंगल्स ने बाद में [[माइक्रोकोड]] में नया डिज़ाइन किया गया संस्करण लागू किया।


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


== नकाबपोश ब्लिट कार्यान्वयन का उदाहरण ==
== नकाबपोश ब्लिट कार्यान्वयन का उदाहरण ==
ब्लिटिंग के लिए एक क्लासिक उपयोग एक पृष्ठभूमि पर (कंप्यूटर ग्राफिक्स) पारदर्शी [[स्प्राइट (कंप्यूटर ग्राफिक्स)]] को प्रस्तुत करना है। इस उदाहरण में एक पृष्ठभूमि छवि, स्प्राइट और 1-बिट मास्क का उपयोग किया जाता है। चूंकि मास्क 1-बिट है, इसलिए अल्फा कंपोज़िटिंग#Alpha ब्लेंडिंग के माध्यम से आंशिक पारदर्शिता की कोई संभावना नहीं है।
ब्लिटिंग के लिए क्लासिक उपयोग पृष्ठभूमि पर (कंप्यूटर ग्राफिक्स) पारदर्शी [[स्प्राइट (कंप्यूटर ग्राफिक्स)]] को प्रस्तुत करना है। इस उदाहरण में पृष्ठभूमि छवि, स्प्राइट और 1-बिट मास्क का उपयोग किया जाता है। चूंकि मास्क 1-बिट है, इसलिए अल्फा कंपोज़िटिंग#Alpha ब्लेंडिंग के माध्यम से आंशिक पारदर्शिता की कोई संभावना नहीं है।


एक लूप जो मास्क में प्रत्येक बिट की जांच करता है और मास्क सेट होने पर ही [[पिक्सेल]] को स्प्राइट से कॉपी करता है, हार्डवेयर की तुलना में बहुत धीमा होगा जो प्रत्येक पिक्सेल पर ठीक उसी ऑपरेशन को लागू कर सकता है। इसके बजाय एक नकाबपोश ब्लिट को AND और OR रास्टर संचालन का उपयोग करके दो नियमित BitBlit संचालन के साथ लागू किया जा सकता है।
लूप जो मास्क में प्रत्येक बिट की जांच करता है और मास्क सेट होने पर ही [[पिक्सेल]] को स्प्राइट से कॉपी करता है, हार्डवेयर की तुलना में बहुत धीमा होगा जो प्रत्येक पिक्सेल पर ठीक उसी प्रचालन को लागू कर सकता है। इसके अतिरिक्त नकाबपोश ब्लिट को AND और OR रास्टर संचालन का उपयोग करके दो नियमित BitBlit संचालन के साथ लागू किया जा सकता है।


{| class="wikitable"
{| class="wikitable"
Line 36: Line 35:
=== तकनीक ===
=== तकनीक ===


स्प्राइट तैयार करते समय रंगों का बहुत महत्व होता है। मास्क पिक्सेल 0 (काला) होते हैं जहाँ भी संबंधित स्प्राइट पिक्सेल प्रदर्शित किया जाना है, और 1 (सफ़ेद) जहाँ भी पृष्ठभूमि को संरक्षित करने की आवश्यकता होती है। स्प्राइट 0 (काला) कहीं भी होना चाहिए जहां इसे पारदर्शी माना जाता है, लेकिन ध्यान दें कि गैर-पारदर्शी क्षेत्रों में काले रंग का उपयोग किया जा सकता है।
स्प्राइट तैयार करते समय रंगों का बहुत महत्व होता है। मास्क पिक्सेल 0 (काला) होते हैं जहाँ भी संबंधित स्प्राइट पिक्सेल प्रदर्शित किया जाना है, और 1 (सफ़ेद) जहाँ भी पृष्ठभूमि को संरक्षित करने की आवश्यकता होती है। स्प्राइट 0 (काला) कहीं भी होना चाहिए जहां इसे पारदर्शी माना जाता है, किन्तु ध्यान दें कि गैर-पारदर्शी क्षेत्रों में काले रंग का उपयोग किया जा सकता है।


पहले ब्लिट में, रास्टर ऑपरेटर बिटवाइज़ ऑपरेशन#AND का उपयोग करके मास्क को बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान ANDed 0 के बराबर है, और 1 के साथ कोई भी मान अपरिवर्तित है, काले क्षेत्र बनाए जाते हैं जहां वास्तविक स्प्राइट दिखाई देंगे, जबकि शेष पृष्ठभूमि को अकेला छोड़ देंगे।
पहले ब्लिट में, रास्टर ऑपरेटर बिटवाइज़ प्रचालन#AND का उपयोग करके मास्क को बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान ANDed 0 के बराबर है, और 1 के साथ कोई भी मान अपरिवर्तित है, काले क्षेत्र बनाए जाते हैं जहां वास्तविक स्प्राइट दिखाई देंगे, जबकि शेष पृष्ठभूमि को अकेला छोड़ देंगे।


{| class="wikitable"
{| class="wikitable"
Line 46: Line 45:
|align="center"| [[Image:XBlit_and.png|none]]
|align="center"| [[Image:XBlit_and.png|none]]
|}
|}
दूसरे ब्लिट में, स्प्राइट को बिटवाइज़ ऑपरेशन #OR के रास्टर ऑपरेटर का उपयोग करके नए परिवर्तित बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान अपरिवर्तित है, पृष्ठभूमि अप्रभावित है और काले क्षेत्र वास्तविक स्प्राइट छवि से भरे हुए हैं।
दूसरे ब्लिट में, स्प्राइट को बिटवाइज़ प्रचालन #OR के रास्टर ऑपरेटर का उपयोग करके नए परिवर्तित बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान अपरिवर्तित है, पृष्ठभूमि अप्रभावित है और काले क्षेत्र वास्तविक स्प्राइट छवि से भरे हुए हैं।


{| class="wikitable"
{| class="wikitable"
Line 54: Line 53:
|align="center"| [[Image:XBlit_final.png|none]]
|align="center"| [[Image:XBlit_final.png|none]]
|}
|}
सफेद पृष्ठभूमि और सफेद-पर-काले मास्क के साथ स्प्राइट का उपयोग करके समान प्रभाव प्राप्त करना भी संभव है। इस मामले में, मास्क पहले ओरेड होगा, और स्प्राइट एंडेड होगा।
सफेद पृष्ठभूमि और सफेद-पर-काले मास्क के साथ स्प्राइट का उपयोग करके समान प्रभाव प्राप्त करना भी संभव है। इस स्थिति में, मास्क पहले ओरेड होगा, और स्प्राइट एंडेड होगा।


== ब्लिटिंग बनाम हार्डवेयर स्प्राइट्स ==
== ब्लिटिंग बनाम हार्डवेयर स्प्राइट्स ==
{{See also|Sprite (computer graphics)}}
{{See also|Sprite (computer graphics)}}
ब्लिटिंग हार्डवेयर-स्प्राइट (कंप्यूटर ग्राफिक्स) ड्राइंग के समान है, जिसमें दोनों सिस्टम स्क्रीन पर अलग-अलग स्थानों पर एक पैटर्न, आमतौर पर एक वर्ग क्षेत्र को पुन: पेश करते हैं।<ref>{{cite web |title=Framebuffer - OpenGL Wiki |url=https://www.khronos.org/opengl/wiki/Framebuffer#Blitting |website=www.khronos.org |accessdate=23 June 2020 |quote=A blit operation is a special form of copy operation; it copies a rectangular area of pixels from one framebuffer to another. This function also has some very specific properties with regard to multisampling.}}</ref> हार्डवेयर स्प्राइट्स को अलग मेमोरी में संग्रहीत होने का लाभ मिलता है, और इसलिए मुख्य डिस्प्ले मेमोरी को परेशान नहीं करता है। इससे उन्हें बिना किसी प्रभाव के, पृष्ठभूमि को कवर करते हुए प्रदर्शन के चारों ओर ले जाने की अनुमति मिलती है।
ब्लिटिंग हार्डवेयर-स्प्राइट (कंप्यूटर ग्राफिक्स) ड्राइंग के समान है, जिसमें दोनों सिस्टम स्क्रीन पर अलग-अलग स्थानों पर पैटर्न, सामान्यतः वर्ग क्षेत्र को पुन: प्रस्तुत करते हैं।<ref>{{cite web |title=Framebuffer - OpenGL Wiki |url=https://www.khronos.org/opengl/wiki/Framebuffer#Blitting |website=www.khronos.org |accessdate=23 June 2020 |quote=A blit operation is a special form of copy operation; it copies a rectangular area of pixels from one framebuffer to another. This function also has some very specific properties with regard to multisampling.}}</ref> हार्डवेयर स्प्राइट्स को अलग मेमोरी में संग्रहीत होने का लाभ मिलता है, और इसलिए मुख्य डिस्प्ले मेमोरी को परेशान नहीं करता है। इससे उन्हें बिना किसी प्रभाव के, पृष्ठभूमि को कवर करते हुए प्रदर्शन के चारों ओर ले जाने की अनुमति मिलती है।


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


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


== यह भी देखें ==
== यह भी देखें ==

Revision as of 20:00, 20 February 2023

टिल तिल (जिसे BITBLT, BIT BLT, BITBLT, Bit BLT, Bit BIT आदि के रूप में भी लिखा जाता है, जो टिल खण्ड स्थानातरण के लिए संयोगित किया जाता है) आँकड़ा प्रचालन है जो सामान्यतः कंप्यूटर चित्रलेख में उपयोग किया जाता है जिसमें अनेक बिटमैप का उपयोग करके निश्चित टेबल बाइनरी प्रचालन में जोड़ा जाता है।.[1]

प्रचालन में कम से कम दो बिटमैप सम्मलित होते हैं, स्रोत (या अग्रभूमि) और गंतव्य (या पृष्ठभूमि) और संभवतः तीसरा जिसे मुक्त स्टैंसिल कहा जाता है। इसके परिणाम स्वरुप इसे चौथे बिटमैप पर लिखा जा सकता है, चूंकि अधिकांशतः यह गंतव्य को परिवर्तित कर देता है। जिसके माध्यम से निर्दिष्ट रेखापुंज प्रचालन (आरओपी) के अनुसार प्रत्येक पिक्सल को बिटवाइज़ संयोजित किया जाता है और फिर परिणाम को गंतव्य पर लिखा जाता है। निर्दिष्ट रेखापुंज प्रचालन (आरओपी) अनिवार्य रूप से बूलियन तर्क का सूत्र है। सबसे स्पष्ट निर्दिष्ट रेखापुंज प्रचालन (आरओपी) स्रोत के साथ गंतव्य को अधिलेखित कर देता है। अन्य निर्दिष्ट रेखापुंज प्रचालन (आरओपी) में तार्किक संयोजन, एक्सओआर, और नकारात्मक संचालन सम्मलित हो जाता हैं।[1] कमोडोर अमिगा के ग्राफिक्स विस्तार और अन्य तीन इनपुट के साथ 256 संभावित बूलियन कार्यों में से किसी का उपयोग करके तीन स्रोत बिटमैप्स को जोड़ सकते हैं।

आधुनिक ग्राफ़िक्स सॉफ़्टवेयर ने लगभग पूर्ण प्रकार से बिटवाइज़ प्रचालन को अल्फा रचना जैसे प्रभावों के लिए उपयोग किए जाने वाले अधिक सामान्य गणितीय प्रचालन के साथ परिवर्तित किया जाता है। सामान्यतः ऐसा इसलिए है क्योंकि रंग दृश्य पर बिटवाइज़ प्रचालन सामान्यतः ऐसे परिणाम नहीं देते हैं जो प्रकाशीय या स्याही के भौतिक संयोजन के समान होते हैं। चूँकि कुछ सॉफ़्टवेयर अभी भी परस्पर संवादात्मक हाइलाइट आयतों या क्षेत्र की सीमाओं को आकर्षित करने के लिए एक्सओआर का उपयोग करते हैं, जब यह छवियों को रंगने के लिए किया जाता है, तो असामान्य परिणामी रंग आसानी से देखे जा सकते हैं।

उत्पत्ति

बिट-बाउंड्री ब्लॉक ट्रांसफर के लिए खड़े ज़ेरॉक्स ऑल्टो कंप्यूटर के लिए नाम BitBLT रूटीन से निकला है। डैन इंगल्स, लैरी टेस्लर, बॉब स्प्राउल और डायना मीरा ने स्मॉलटाक -72 सिस्टम के लिए नवंबर 1975 में ज़ेरॉक्स PARC में इस प्रचालन को प्रोग्राम किया। डैन इंगल्स ने बाद में माइक्रोकोड में नया डिज़ाइन किया गया संस्करण लागू किया।

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

नकाबपोश ब्लिट कार्यान्वयन का उदाहरण

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

लूप जो मास्क में प्रत्येक बिट की जांच करता है और मास्क सेट होने पर ही पिक्सेल को स्प्राइट से कॉपी करता है, हार्डवेयर की तुलना में बहुत धीमा होगा जो प्रत्येक पिक्सेल पर ठीक उसी प्रचालन को लागू कर सकता है। इसके अतिरिक्त नकाबपोश ब्लिट को AND और OR रास्टर संचालन का उपयोग करके दो नियमित BitBlit संचालन के साथ लागू किया जा सकता है।

Background image Sprite (left) and mask (right)
File:Blit back.png File:XBlit dot.png

इसे उत्पन्न करने के लिए छवि पर स्प्राइट को विभिन्न स्थितियों में खींचा जाता है:

Intended Result


तकनीक

स्प्राइट तैयार करते समय रंगों का बहुत महत्व होता है। मास्क पिक्सेल 0 (काला) होते हैं जहाँ भी संबंधित स्प्राइट पिक्सेल प्रदर्शित किया जाना है, और 1 (सफ़ेद) जहाँ भी पृष्ठभूमि को संरक्षित करने की आवश्यकता होती है। स्प्राइट 0 (काला) कहीं भी होना चाहिए जहां इसे पारदर्शी माना जाता है, किन्तु ध्यान दें कि गैर-पारदर्शी क्षेत्रों में काले रंग का उपयोग किया जा सकता है।

पहले ब्लिट में, रास्टर ऑपरेटर बिटवाइज़ प्रचालन#AND का उपयोग करके मास्क को बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान ANDed 0 के बराबर है, और 1 के साथ कोई भी मान अपरिवर्तित है, काले क्षेत्र बनाए जाते हैं जहां वास्तविक स्प्राइट दिखाई देंगे, जबकि शेष पृष्ठभूमि को अकेला छोड़ देंगे।

Result of the first blit

दूसरे ब्लिट में, स्प्राइट को बिटवाइज़ प्रचालन #OR के रास्टर ऑपरेटर का उपयोग करके नए परिवर्तित बैकग्राउंड पर ब्लिट किया जाता है। क्योंकि 0 के साथ कोई भी मान अपरिवर्तित है, पृष्ठभूमि अप्रभावित है और काले क्षेत्र वास्तविक स्प्राइट छवि से भरे हुए हैं।

Final result

सफेद पृष्ठभूमि और सफेद-पर-काले मास्क के साथ स्प्राइट का उपयोग करके समान प्रभाव प्राप्त करना भी संभव है। इस स्थिति में, मास्क पहले ओरेड होगा, और स्प्राइट एंडेड होगा।

ब्लिटिंग बनाम हार्डवेयर स्प्राइट्स

ब्लिटिंग हार्डवेयर-स्प्राइट (कंप्यूटर ग्राफिक्स) ड्राइंग के समान है, जिसमें दोनों सिस्टम स्क्रीन पर अलग-अलग स्थानों पर पैटर्न, सामान्यतः वर्ग क्षेत्र को पुन: प्रस्तुत करते हैं।[2] हार्डवेयर स्प्राइट्स को अलग मेमोरी में संग्रहीत होने का लाभ मिलता है, और इसलिए मुख्य डिस्प्ले मेमोरी को परेशान नहीं करता है। इससे उन्हें बिना किसी प्रभाव के, पृष्ठभूमि को कवर करते हुए प्रदर्शन के चारों ओर ले जाने की अनुमति मिलती है।

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

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

यह भी देखें

संदर्भ

  1. 1.0 1.1 Sanchez, Julio; Maria P. Canton (2007). "Displaying Bit-Mapped images". Software solutions for engineers and scientists. CRC Press. p. 690.
  2. "Framebuffer - OpenGL Wiki". www.khronos.org. Retrieved 23 June 2020. A blit operation is a special form of copy operation; it copies a rectangular area of pixels from one framebuffer to another. This function also has some very specific properties with regard to multisampling.


बाहरी संबंध