渲染涉及大量的緩存,這里緩存只是一個(gè)簡(jiǎn)單的存有像素?cái)?shù)據(jù)的矩形內(nèi)存塊,最重要緩存是幀緩存和深度緩存。
幀緩存存儲(chǔ)每個(gè)像素的色彩,即渲染后的圖像。色彩可能有多種格式,但就當(dāng)前的討論來(lái)說(shuō),不考慮格式的差異。幀緩存常常在顯存中,顯卡不斷讀取該內(nèi)存,并將二進(jìn)制數(shù)據(jù)轉(zhuǎn)化為CRT接收的合適信號(hào)。所謂雙緩存技術(shù),是為了防止圖像在未完全渲染好之前就被顯示。此時(shí)實(shí)際上使用了兩個(gè)幀緩存,一個(gè)緩存存放當(dāng)前顯示的圖像,另一個(gè)離線(xiàn)緩存存放正在渲染的圖像。
一旦渲染完成并準(zhǔn)備好顯示即切換緩存,有兩種方式:
(1)如使用頁(yè)切換技術(shù),則命令顯示卡開(kāi)始從離線(xiàn)緩存讀取數(shù)據(jù),接著對(duì)調(diào)兩個(gè)緩存的角色,現(xiàn)在的顯示緩存變?yōu)殡x線(xiàn)緩存。
(2)也可以將離線(xiàn)緩存復(fù)制到顯示緩存。
下圖顯示了雙緩存的情況:
另一個(gè)用于渲染的重要緩存是深度緩存----也稱(chēng)作z-buffer。深度緩存不存儲(chǔ)像素的顏色,而代之以像素的深度信息。存入緩存的深度信息有多種不同的變體,但它們基本上都反映物體到攝像機(jī)的距離。實(shí)踐中通常保存的都是裁剪空間的z坐標(biāo),這就是z-buffer名稱(chēng)的由來(lái)。
深度緩存一般用于計(jì)算物體之間的遮擋,當(dāng)光柵化三角形時(shí),計(jì)算各像素的插值深度。在渲染像素之前,將這個(gè)深度值和深度緩存中該像素的深度值比較,如果新的深度比現(xiàn)有值離攝像機(jī)更遠(yuǎn),則新的像素被丟棄;否則像素顏色被寫(xiě)到幀緩存,并用新的更近的值更新深度緩存。在開(kāi)始進(jìn)行新的渲染之前,記得要置z-buffer各值為無(wú)限遠(yuǎn)(在裁剪空間中,這個(gè)值為1.0),這樣第一批像素才能通過(guò)深度測(cè)試,一般不對(duì)z-buffer設(shè)置雙緩存。
-
緩存
+關(guān)注
關(guān)注
1文章
245瀏覽量
27035 -
渲染
+關(guān)注
關(guān)注
0文章
75瀏覽量
11110
原文標(biāo)題:渲染中最重要的兩個(gè)緩存:幀緩存和深度緩存
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
談?wù)?b class='flag-5'>深度無(wú)盤(pán)緩存工具設(shè)置技巧
視頻相鄰幀相減,怎么解決圖片緩存問(wèn)題
什么是追蹤緩存/轉(zhuǎn)接卡?
內(nèi)容中心網(wǎng)絡(luò)中基于緩存索引的緩存路由機(jī)制
Mybatis緩存之一級(jí)緩存

什么是Web緩存,HTTP緩存和瀏覽器緩存的區(qū)別

淺談架構(gòu)設(shè)計(jì)中的緩存技術(shù)

緩存的基本原理 緩存的分類(lèi)
如何在SpringBoot中解決Redis的緩存穿透等問(wèn)題
聊聊本地緩存和分布式緩存

如何使用緩存
mybatis一級(jí)緩存和二級(jí)緩存的原理
Redis緩存預(yù)熱+緩存雪崩+緩存擊穿+緩存穿透要點(diǎn)簡(jiǎn)析

評(píng)論