渲染涉及大量的緩存,這里緩存只是一個簡單的存有像素數據的矩形內存塊,最重要緩存是幀緩存和深度緩存。
幀緩存存儲每個像素的色彩,即渲染后的圖像。色彩可能有多種格式,但就當前的討論來說,不考慮格式的差異。幀緩存常常在顯存中,顯卡不斷讀取該內存,并將二進制數據轉化為CRT接收的合適信號。所謂雙緩存技術,是為了防止圖像在未完全渲染好之前就被顯示。此時實際上使用了兩個幀緩存,一個緩存存放當前顯示的圖像,另一個離線緩存存放正在渲染的圖像。
一旦渲染完成并準備好顯示即切換緩存,有兩種方式:
(1)如使用頁切換技術,則命令顯示卡開始從離線緩存讀取數據,接著對調兩個緩存的角色,現在的顯示緩存變為離線緩存。
(2)也可以將離線緩存復制到顯示緩存。
下圖顯示了雙緩存的情況:
另一個用于渲染的重要緩存是深度緩存----也稱作z-buffer。深度緩存不存儲像素的顏色,而代之以像素的深度信息。存入緩存的深度信息有多種不同的變體,但它們基本上都反映物體到攝像機的距離。實踐中通常保存的都是裁剪空間的z坐標,這就是z-buffer名稱的由來。
深度緩存一般用于計算物體之間的遮擋,當光柵化三角形時,計算各像素的插值深度。在渲染像素之前,將這個深度值和深度緩存中該像素的深度值比較,如果新的深度比現有值離攝像機更遠,則新的像素被丟棄;否則像素顏色被寫到幀緩存,并用新的更近的值更新深度緩存。在開始進行新的渲染之前,記得要置z-buffer各值為無限遠(在裁剪空間中,這個值為1.0),這樣第一批像素才能通過深度測試,一般不對z-buffer設置雙緩存。
-
緩存
+關注
關注
1文章
240瀏覽量
26724 -
渲染
+關注
關注
0文章
70瀏覽量
10936
原文標題:渲染中最重要的兩個緩存:幀緩存和深度緩存
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論