<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,如需转载请自行联系原作者