Chinaunix首页 | 论坛 | 博客
  • 博客访问: 347143
  • 博文数量: 78
  • 博客积分: 3380
  • 博客等级: 中校
  • 技术积分: 857
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-16 19:39
文章分类

全部博文(78)

文章存档

2011年(31)

2010年(47)

分类: WINDOWS

2011-08-25 12:43:45

AGG的总体结构按照文件大致分为:
1)基本定义(config,basics....)
2)基本操作、类型(主要供AGG本身内部使用 math,math_stroke,dda_line,color,rendering_buffer,ect.;
3)转换(agg_conv_s...)主要用于实现一些变换和类型转换操作
4)字体相关(font_xx);
 5
spans 根据轮廓生成扫描线并置颜色
6)绘制相关(renderer_xx)绘制调用,与相应的内存交互,生成待显示图形区(可以认为是连续内存区)
7)rasterizers栅格化相关文件,通过相应的scanline完成从存储的点坐标信息和相应命令到内存区块

      AGG的网站上说只要将相应的头文件和cpp文件加入到项目中当作自己的文件编译即可,但是许多刚刚开始使用AGG的人来说并不了解AGG本身的功能和代码结构,导致只能运行其提供的sampleAGG通过泛型,跨平台性做的很好,可以在许多开发环境中直接编译。我们可以在VC6中直接将其编译成静态链接库,然后将所有的.h文件拷入到VC98\include\agg中,将编译完的.lib文件拷入到VC98\lib中,这样我们便可能在VC6中通过alt+F7link-> input中加载你所编译的.lib文件达到配置agg的目的,你新建一个cpp文件可以直接#include ....之后再有一个继承agg_platform_support的实现和agg_main即可完成一个相应的框架。

    
                                       
rendering buffer (frame buffer
 我们可以理解为显存)存储一块连续的内存区域,不知道自身具体存储内容的结构,只按照行的长度,向外提供行指针,有宽、高、步长属性。
span render
水平区段绘制器,用于绘制scanline中的段,与rendering buffer直接交互,将scanline的内容映射到显存中。
outline
 轮廓线,将矢量数据转化为点阵格式 rasterizer 内部类。

scanline 将点阵格式的点集合,转化成为renderer使用的水平区段。
renderer
将点阵数据填上颜色放入显存中
rasterizer
栅格器,用于转化上层的矢量数据到栅格集合中。
Vector transitions
矢量变化,一个复杂的集合对应着nconvs 对点集合的操作。

 

一个比方来介绍agg里面的一组关系,rasterizer,scanline,renderer之间的关系.它们就如同你在黑板面前拿着一本一册,用粉笔画黑板报.那本画册就是rasterizer,他存储图形,黑板套装(包括粉笔)就是我们的renderer,而你就是中间的scanline. AGG中就是通过scanlinerasterizer中存放的栅格信息用粉笔pixfmt_renderer转化到黑板rendering_buffer中,完成最终的绘制.
阅读(1060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~