Theory
Picture Memory में कहाँ रहती है
एक raster display एक second में कई बार memory से picture पढ़कर refresh होता है। वह memory frame buffer (या refresh buffer) है: वह जगह जहाँ हर pixel का colour stored है।
जब आप एक raster screen पर 'draw' करते हैं, आप actually frame buffer में pixel values लिख रहे हैं, और display hardware buffer में जो कुछ भी है उसे उस image में बदल देता है जो आप देखते हैं। यह lesson frame buffer explain करता है, bit depth कैसे colours की number set करता है, और इसके size के लिए simple formula। यह आपके drawing code और screen पर pixels के बीच का bridge है।
Theory
एक Buffer, हर Pixel के लिए एक Value
Frame buffer एक pixel के लिए एक colour value hold करता है। Screen पर हर pixel इस memory में एक location से correspond करता है, तो pixel (x, y) को एक colour set करने का मतलब है buffer में matching spot पर वह colour store करना।
एक pixel कितनी colours हो सकता है यह इसके bit depth पर depend करता है, bits per pixel की number: 1 bit 2 values store करता है (monochrome, black या white), 8 bits 256 colours store करते हैं, और 24 bits लगभग 16 million colours store करते हैं (true colour कहा जाता है, realistic images के लिए enough)। हर pixel में ज़्यादा bits का मतलब है ज़्यादा possible colours, पर ज़्यादा memory भी। Display refresh करने के लिए continuously यह buffer पढ़ता है, यही वजह है आप जो picture देखते हैं वह exactly वही है जो frame buffer में है।
Formula
Frame Buffer Size = Pixels times Bits per Pixel
एक frame buffer को चाहिए memory compute करना easy है: size = pixels की number x bits per pixel (फिर bytes में convert कीजिए)।
एक 640 x 480 screen लीजिए। यह 640 x 480 = 307200 pixels है। हर pixel में 8 bits (1 byte) पर, buffer 307200 x 1 = 307200 bytes = 300 KB है। हर pixel में 24 bits (3 bytes) पर, यह 307200 x 3 = 921600 bytes है, लगभग 0.88 MB। तो higher resolution और higher bit depth दोनों frame buffer का size बढ़ाते हैं, यही वजह है richer images को ज़्यादा memory चाहिए। यह calculation एक common exam question है, इसे master कीजिए।
Quiz
एक display 640 x 480 pixels है हर pixel में 8 bits (1 byte) के साथ। इसका frame buffer कितना बड़ा है?
- लगभग 1120 bytes (640 + 480)
- 307200 bytes (लगभग 300 KB): 640 x 480 = 307200 pixels, हर एक 1 byte times
- लगभग 30 bytes
- 8 bytes, एक per bit
Show the answer
307200 bytes (लगभग 300 KB): 640 x 480 = 307200 pixels, हर एक 1 byte times
Frame buffer size = pixels की number x bytes per pixel। Pixel count 640 x 480 = 307200 है, और हर pixel में 8 bits (1 byte) पर वह 307200 x 1 = 307200 bytes है, जो 300 KB है (307200 / 1024)। Option A dimensions को wrongly ADD करता है (640 + 480) इन्हें multiply करने की बजाय; एक screen में width times height pixels होते हैं, width plus height नहीं। Option C और D बहुत छोटे हैं और numbers misuse करते हैं। Method: pixel count के लिए width को height से multiply कीजिए, फिर bytes per pixel से multiply कीजिए; यहाँ 640 x 480 x 1 = 307200 bytes = 300 KB।
Think first
ज़्यादा Bit Depth का मतलब ज़्यादा Memory क्यों है, और क्या यह Matter करता है?
8-bit से 24-bit colour में जाना frame buffer को triple क्यों करता है, और वह trade कब worth है? फिर tap कीजिए।
Show the answer
क्योंकि frame buffer हर PIXEL के लिए एक colour value store करता है, और bit depth यह है कि उनमें से हर एक value में कितने bits लगते हैं, तो bits per pixel triple करना पूरे buffer को triple करता है, क्योंकि यह सारे pixels के across multiply होता है। 8 bits per pixel पर, एक 640x480 screen के 307200 pixels में से हर एक 1 byte इस्तेमाल करता है, 300 KB के लिए। 24 bits (3 bytes) per pixel पर, हर pixel अब तीन गुना ज़्यादा इस्तेमाल करता है, तो buffer 921600 bytes बन जाता है, लगभग 0.88 MB, exactly तीन गुना बड़ा। उन extra bits से आप जो benefit खरीदते हैं वह है COLOUR RANGE: 8 bits सिर्फ़ 256 distinct colours देता है, जो simple graphics के लिए fine है पर smooth gradients पर visible banding दिखाता है और एक realistic photograph represent नहीं कर सकता, जबकि 24 bits लगभग 16 million colours देता है (true colour), smooth, natural tones वाली photographic images के लिए enough। तो trade memory versus colour fidelity है। Historically, जब memory scarce और expensive थी, lower bit depths common थे frame buffer को small रखने के लिए, और clever tricks (जैसे colour palettes) कुछ bits से ज़्यादा apparent colour निचोड़ते थे। जैसे memory cheap हुई, 24-bit (और higher) standard बन गई क्योंकि richer colour realistic displays के लिए extra bytes worth थे। Same reasoning RESOLUTION के साथ scale करता है: ज़्यादा pixels भी buffer multiply करते हैं। तो designers resolution और bit depth को available memory और bandwidth के against balance करते हैं, memory waste किए बिना इन्हें चाहिए images के लिए हर एक का enough choose करते हुए। ज़्यादा bits per pixel बराबर ज़्यादा colours बराबर ज़्यादा memory, एक direct, multiplicative trade।
Summary
Key takeaways
- Frame buffer (refresh buffer) वह memory है जो हर pixel का colour hold करती है; display इसे screen refresh करने के लिए पढ़ता है।
- हर pixel buffer में एक location से map होता है; draw करने का मतलब है इसमें pixel values लिखना।
- Bit depth (bits per pixel) colours की number set करता है: 1 bit = 2, 8 bits = 256, 24 bits = लगभग 16 million (true colour)।
- Frame buffer size = pixels की number x bits per pixel (bytes में converted)।
- Example: 640 x 480 = 307200 pixels; 8 bits पर = 300 KB; 24 bits पर = लगभग 0.88 MB।
- Higher resolution और higher bit depth दोनों frame buffer की memory needs बढ़ाते हैं।
- Memory hook: frame buffer per pixel एक colour value है; size = pixels times bits per pixel।