<a href="http://www.360doc.com/content/11/1015/09/992979_156314240.shtml" target="_blank">http://www.360doc.com/content/11/1015/09/992979_156314240.shtml</a>
<a href="http://www.cppblog.com/Shihira/archive/2012/07/24/183204.html" target="_blank">http://www.cppblog.com/Shihira/archive/2012/07/24/183204.html</a>
<a href="http://www.cnblogs.com/liyiwen/archive/2010/06/03/1751094.html" target="_blank">http://www.cnblogs.com/liyiwen/archive/2010/06/03/1751094.html</a>
這是一塊儲存了圖形的像素點的記憶體,這是一塊即将顯示到界面的圖形。這塊記憶體儲存了圖形的像素點的顔色。在這裡記錄了每一個點的顔色。這是AGG與顯示器之間的橋梁,把這塊記憶體看成是一個二維的空間數組,就直接映射到顯示器上的,記憶體的每一行的點,都對應螢幕上的位置點。我們要顯示AGG圖形實際上就是識别這個記憶體塊并使用系統的API顯示出來。(實際上不需要做任何的轉換工作,因為無論是windows還是Linux,API所用的圖像存儲格式與Rendering Buffer都是相容的)。
我們先從這裡開始:在記憶體中開辟一塊存儲區,然後将它的内容以最簡單的光栅格式寫到檔案中,也就是PPM(Portable Pixel Map)格式。雖然 Windows 對這種格式并沒有原生的支援,但很多圖像浏覽器和轉換器都能使用這種格式,比如 IrfanView(www.irfanview.com)。所有 AGG 的控制台例子都使用了 P6 256 格式,也就是RGB,每個位元組代碼一個顔色。現在假設我們将在下圖所示的 RGB-buffer 記憶體區中工作:
她提供了提供了通路渲染緩存中的每一行每一個位元組顔色的接口。隻要我們知道我們顯示圖檔的每一點的顔色值,我們幾乎不需要任何其他的畫線,繪制圖形的類。
以前:unsigned char* p = rbuf.row(i);
現在:unsigned char* p = rbuf.row_ptr(i);
本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1961278,如需轉載請自行聯系原作者