就好比网络通信,存在如下的名词:套接字,端口,传输层,IOS7层模型,等等,连接被服务器重置,操作超时!!小小的嘲笑一下自己:至今无法完整默写IOS7层模型,甚至连IOS的拼写不一定正确。但是不代表我不精通TCP/IP协议。
废话少说,对于渲染库,一样多的概念,render,raster,stride,scanline,cap,等等,有人曾经说30分钟学会STL,我这里只能够说以下的专业名称的描述,以及基本的理念必须时时刻刻牢记于心,并且尤其是拼凑的逻辑,可以在用的时候,多加练习。
agg::rendering_buffer
//保存像素点矩阵数据的内存块,可以把屏幕上显示的图片看成是一个矩阵,这个长为width,宽为height的图片,在内存中对应一个连续的数据块,对于某一个点来说,是有横坐标和纵坐标,但是在内存中是没有二维数组的表现,只是连续的内存块,只不过通过分段,看成是一个二维的矩阵。Rendering Buffer渲染的内存块,就是即将显示界面的颜色内存块,其中agg::rendering_buffer类提供了一系列直接操作某一个坐标点颜色的函数,例如row_ptr();这个稍后会提供详细的说明。
typedefagg::renderer_base<agg::pixfmt_bgr24>
//Renderers渲染器,我们可以看成是油漆,颜料,为线段提供颜色
typedefagg::renderer_scanline_aa_solid<renderer_base_type>
//Vertex Source顶点源,我更喜欢称之为端点集合,或者点集合矩阵
agg::ellipse ell(100,100,50,50);
//Coordinate conversion pipeline坐标转换通道,晦涩难懂,它可以变换Vertex Source中的顶点,比如矩阵变换,轮廓提取,转换为虚线等。
typedefagg::conv_contour<agg::ellipse>
//Scanline Rasterizer光栅化,说她是画册,描述了所有我们即将描绘图案,颜色,线条,
//但是并不切确,因为她只是一个容器,一个记载线段,标志,详细参数的规格说明书,
//连草图都不是,她更像是一张菜谱,里面记录了食材,记录了烹饪的过程,仅此而已。
agg::rasterizer_scanline_aa<> ras;
agg::scanline_u8 sl;
Anti-Aliasing
被翻译成抗锯齿功能,没有人告诉我为什么使用img形式,但是这个概念,对于陌生的你完全没有的感觉,你对图像的圆滑有什么感觉,没有任何的棱角,想象一下锯木的刀具上的锯齿,实际上,粗糙的渲染,就会让你看见,稍后会对比MFC渲染的结果,查看光滑度,比较一下两者之间的差别。
像素格式渲染器(PixelFormatRenderer)是最基础的渲染器,不需要任何其他渲染器的支持,所以可以直接声明;
基础渲染器(BaseRenderer)是中级渲染器,需要像素格式作为模版和像素格式渲染器的支持;
扫描线渲染器(ScanlineRenderer)是高级渲染器,需要基础渲染器作为模版和支持;