首頁>Club>
6
回覆列表
  • 1 # lanfengz1

    可是,我卻對雙緩衝這個詞感到莫名其妙

    雙緩衝聽起來好像很深奧,其實其本質很簡單:就是先生成一張點陣圖,然後把所有的繪圖工作都畫的這張點陣圖上,然後再將這張點陣圖一次性畫到螢幕中去。

    它的關鍵技術就是: 不要直接在螢幕上畫圖,而是將所有的繪圖工作先繪製到圖片上

    我們研究下從開始繪圖到螢幕顯示影象的過程

    第一步: 將所有的繪圖緩衝到點陣圖中

    第二步:將點陣圖複製到螢幕上,此時相當於所有的繪圖又跳躍到了螢幕

    繪圖進行了兩次跳躍:第一次跳躍到點陣圖中,第二次跳躍到螢幕上,所以這種技術可以稱之為雙緩衝

    閃爍的原因就是新圖和舊圖直接的差別造成的。

    1) 更新時,先使用背景刷 刷一下背景,然後再貼圖 背景刷和影象之間的差別能造成閃爍,這點可透過響應察除背景刷訊息來消除 OnEraseBkgnd(CDC* pDC)

    2) 先畫一張白色圖片,然後再在白色圖片上畫紅色矩形

    此時,背景刷問題解決了,但是在螢幕上 首先貼一張白圖,然後再白圖上畫一個紅色矩形,二者顏色差別明顯,如果頻繁繪圖時,便不可避免的產生閃爍。

    那如果使用雙緩衝,此種現象便可以消除,分析如下:

    先把白色圖畫到記憶體點陣圖中,然後再將紅色矩形畫到這個記憶體點陣圖中,最後將這個點陣圖複製到螢幕上。

    由於原螢幕上的影象與點陣圖中的影象差別很小(都是白色圖和紅矩形),因此當頻繁繪圖時,可有效降低閃爍

    鄙視一下 那些講不清道理,又不肯給出例項的傢伙--0--

    以下是虛擬碼:

  • 中秋節和大豐收的關聯?
  • 某些魚類在心臟受損後可以自愈,相關基因可否用於治療人類心臟病?