雙緩沖 buffer: a b(front back)
三緩沖 buffer: a b c(front back pending)
cpu 為繪制準備commandbuffer的内容
gpu 往buffer上畫
顯示卡的内容呈現到顯示器 (這裡開了垂直同步需要等垂直同步信号 60 30 20 15.....60hz顯示器)
gpu畫完a,要畫b時,如果b處于畫完了還沒有呈現到顯示器的階段,
雙緩存的GPU隻能wait,(等垂直同步信号
三緩存的GPU可以往c(pendingbuffer)上畫不用等 ,(提升了GPU的使用率
在GPU畫完a時, 垂直信号沒有來,這樣并不能swap,整個pipelilne就被阻塞了,
也就是說這種情況下,你開了垂直同步幀率就會掉過30,變成20,實際關了垂直同步是可以達到28的,但關垂直同步會有tearing,這時就該考慮
開垂直同步,開三緩沖了)這個了解應該是對的了 references:Real time rendering 3rd)
假如一次繪制需要34ms, 在開了垂直同步的情況下(不開會撕裂還有别的顯示問題)
雙緩存的gpu隻能wait FPS掉到20
三緩存的gpu可以往c上畫不用wait
三緩沖缺點是latency是一幀,延遲的厲害
backbuffer 裡面的内容是畫好了 随時等着swap到front的(呈現)
===========
假設有buffer012
cpu在為commandbuffer準備資料
gpu拿到cb往buffer0上畫畫完之後gpu會繼續往buffer1上畫 隻有在同步信号來了之後 才會把buffer裡的内容呈現到顯示器要是信号還沒來 它又不想等就可以繼續往buffer2上畫