關於幀緩衝的總結

來源:互聯網
上載者:User
關於幀緩衝的總結

本來想帶上例子的,發現自己懂得太晚了,沒必要了。寫下自己的理解就行了。

1. 緩衝區

 緩衝區是一塊記憶體或在相應硬體中開闢的空間,目的是為了儲存像素資料中的相關資訊。

根據緩衝中不同的作用,和功能分為顏色緩衝、模板緩衝、深度緩衝、積累緩衝等(有的根據具體作用還有其他緩衝)。同意成稱為 幀緩衝!

2. 概念、原理、OpengGL實現

     2.1顏色緩衝區

顏色緩衝區的作用就是實現儲存要顯示在螢幕上的,經過管線處理變化後的顏色準備顯示到螢幕上。顏色緩衝區主要包括:支援立體顯示的左右緩衝區,支援動畫的前後緩衝區(ps:動畫這裡表示實現在後緩衝區實現繪圖後  通過交換緩衝區交換到前緩衝區,不再顯示繪畫過程)。 類似 輔助庫auxSwapBuffers();實現的前後緩衝的交換。

 

     2.2深度緩衝區

深度緩衝區儲存像素的深度值。深度值是因三維世界的興起而提出的,圖形學中(在繪畫專業估計早有此概念,畢竟好多演算法實現都是從畫家那裡得來的)。深度緩衝區也叫Z-buffer 所以,每個像素的z座標即為它的深度。

深度緩衝在立體圖形消隱等演算法中廣為應用。

 

    2.3樣板緩衝區

樣板緩衝區作用比較奇特。模板的作用是實現渲染地區按照程式設計的方式實現。比如:如果讓你實現在顯然地區中一個小的正方形顯示渲染,你可能會想到用剪下就行了。但是,如果讓你實現一個五角星裡面渲染呢? 這時候用 模板 最為方便。

模板的應用過程就是在樣板緩衝區內設定好要顯示渲染的形狀,開啟目標測試,通過檢測的像素渲染,沒有通過的丟棄。就會出現想要的效果:在一個五角星裡有我們渲染的東西,其他地方看不見。

    2.4積累緩衝區

積累緩衝區字面意思,實現了顏色的積累實現一些特殊的效果。

3. 緩衝區的操作

     3.1緩衝區的清除

為了防止緩衝區內的資料對繪圖的影響,在繪圖之前要對緩衝區實行清除操作。

過程: 首先設定清除值。如:

設定顏色清除值 glClearColor(r,g,b,a)

設定深度清除值 glClearDepth(dep)

設定模板清除值 glClearStencil(int a);

           然後 設定清除項 glClear();

 

參數包括 GL_DEPTH_BUFFER_BIT

GL_COLOR_BUFFER_BIT

GL_ACCUM_BUFFER_BIT

GL_STENCIL_BUFFER_BIT

以上幾個參數可以 相互進行或後作為參數給glColor();

 

3.2緩衝屏蔽

所謂緩衝屏蔽,可以理解為緩衝區是否可寫,當我們對緩衝區添加屏蔽時,並沒有停止相應測試,而是緩衝區一直沒有變。

 

3.3測試

http://bochuang.sinaapp.com/forum.php?mod=viewthread&tid=49&extra=page%3D1 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.