AGG参考手册1
……Anti-GrainGeometry(AGG)是一个用标准的平台无关的C++开发的通用图形工具包
在把高质量二维图形作为关键的计算机程序中,它可以应用被应用于许多方面
例如,AGG可以用于渲染二维地图
AGG仅仅使用C++和标准C的函数,如memcpy,sin,cos,sqrt等
基本的算法甚至没有使用C++的标准模板库
因此,AGG能够在大量的应用程序中使用,包括嵌入式系统
另一方面,AGG允许使用者替换图形库的任何部分,比如当它不能满足性能的要求时进行库的替换
使用者也可以根据需要添加其它的颜色空间
这一切的实现都是因为AGG广泛采用了C++的模板机制
AGG不是一个结构紧密的图形库,且不容易使用
我认为AGG是一个“创建其它工具的工具”
这意味着AGG中没有“Graphics”对象或其它类似的结构,它包含了许多组织松散、能组合或是单独使用的算法
这些算法都有定义良好的接口,并且算法之间隐式或显式的依赖关系尽可能最小
……大部分图形库都有一个包含成百上千方法的单独类,如GDI+中的“Graphics”
这个对象也可以隐式存在,如OpenGL
总之,所有常用的图形工具包,包括Java2D,DispalyPDF,SVG以及其它优秀的图形工具包都显式或隐式的含有这个类
这种做法简单而且非常适用于一些场合,但是去一直受到限制
它在简单的场合中性能很好,但至少我仍未遇到可以完全满足所有需求的图形库
此外,所有此种类型的库或标准都过于庞大
大部分功能从未被使用,而一些简单的操作却不能实现
图形引擎(或库)是一兆字节来计算的
如果使用最先进的SVG浏览器,它只在显示最简单的基元时表现良好
只要试图使用一些高级操作,如用不同的图形过滤器与SVG交互,将会发生内存泄露,甚至崩溃
这并不是因为它有不良设计,而是因为采取了极端复杂