1. 程式人生 > >客戶端小圖元快取池

客戶端小圖元快取池

這個快取池,主要是用來做字型圖元和其他小圖元的貼圖快取用的。 快取池由數個級別的貼圖池組成,每個貼圖池中有數張大小一致的正方形貼圖(2的N次方的邊長)。 每個正方形貼圖被分成16*16的小塊。每個塊給一個BYTE描述的編號。每張貼圖有一個WORD描述的編號。 當新增一個快取項時,先根據快取項的最小邊長和最大邊長確定快取池的級別。然後搜尋貼圖上的格子,看是否有能夠容納這個圖元的連續的格子。如果找到,就儲存開始編號和結束編號到快取項裡。如果未找到就擴充套件當前級別池的貼圖。然後鎖住貼圖,拷貝或者生成圖元畫素。最後,根據池的級別,貼圖的編號和開始格子編號,生成一個快取項ID,返回給呼叫者。 渲染時,根據快取項ID定位到快取項,並根據快取項中的開始和結束格子編號生成貼圖的UV。 可以優化的地方:1- 把長度超過快取貼圖邊長的圖元切成數段,快取到貼圖裡。 2- 將渲染請求快取起來,根據貼圖排序後,再進行渲染。減少切換次數。


例項:下圖中文字的CACHE分佈的貼圖被顯示出來。可以清楚的看到,一些橫向和縱向的圖元,被分部到最小的CACHE貼圖裡。