【php精品源码栏目提醒】:以下是网学会员为您推荐的php精品源码-AGG参考手册中文 - 宣传企划,希望本篇文章对您学习有所帮助。
AGG 参考手册1. 前言1.1. 简介1.1.1. …… Anti-Grain Geometry AGG是一个用标准的平台无关的 C开发的通用图形工具包。
在把高质量二维图形作为关键的计算机程序中,它可以应用被应用于许多方面。
例如,AGG 可以用于渲染二维地图。
AGG 仅仅使用 C和标准 C 的函数,如 memcpy,sin,cos,sqrt 等。
基本的算法甚至没有使用 C的标准模板库。
因此,AGG 能够在大量的应用程序中使用,包括嵌入式系统。
另一方面,AGG 允许使用者替换图形库的任何部分,比如当它不能满足性能的要求时进行库的替换。
使用者也可以根据需要添加其它的颜色空间。
这一切的实现都是因为 AGG广泛采用了 C的模板机制。
AGG 不是一个结构紧密的图形库,且不容易使用。
我认为 AGG 是一个“创建其它工具的工具”。
这意味着 AGG 中没有“Graphics”对象或其它类似的结构,它包含了许多组织松散、能组合或是单独使用的算法。
这些算法都有定义良好的接口,并且算法之间隐式或显式的依赖关系尽可能最小。
1.1.2. …… 大部分图形库都有一个包含成百上千方法的单独类,如 GDI中的“Graphics”。
这个对象也可以隐式存在,如 OpenGL。
总之,所有常用的图形工具包,包括 Java2DDispalyPDFSVG以及其它优秀的图形工具包都显式或隐式的含有这个类。
这种做法简单而且非常适用于一些场合,但是去一直受到限制。
它在简单的场合中性能很好,但至少我仍未遇到可以完全满足所有需求的图形库。
此外,所有此种类型的库或标准都过于庞大。
大部分功能从未被使用,而一些简单的操作却不能实现。
图形引擎(或库)是一兆字节来计算的。
如果使用最先进的SVG 浏览器,它只在显示最简单的基元时表现良好。
只要试图使用一些高级操作,如用不同的图形过滤器与 SVG 交互,将会发生内存泄露,甚至崩溃。
这并不是因为它有不良设计,而是因为采取了极端复杂的设计。
这种设计本身成为了不可能完成的任务,不能被人感知,,就像不能感知无穷大一样。
1.1.3. 建议 AGG 主要的目标是要打破上述的传统,展现其稳定、轻巧、灵活、自由的优点。
它的基本概念开始似乎并不遵循惯例,非常接近于 STL,但还是存在着很大的区别。
STL 是一个 STL通用的 C工具, AGG 是 C图形库。
作为一个方便的工具包直接在应用程序中使用, 而但我并不建议以同样的方式使用 AGG。
比较好的方法是针对需要处理的问题,对 AGG 进行轻量级的、面向问题的封装后再使用。
这与 GDI又有什么不同呢?首先,可以完全控制封装后的 AGG。
AGG 只是提供了一系列基本的算法和灵活的设计,使得算法间显式或隐式的联系都最小。
使用者可以只定义接口、转换管道和输出格式,甚至可以模拟任何已经存在的图形接口的一部分。
例如,使用 AGG 光栅化器来在屏幕上显示图形并直接调用 W indows GDI来打印,并合并为一个单独的 API。
不信吗?下图是 GDI和 AGG 的渲染质量的比较。
但是最重要的是,如果设计足够灵活,程序将是完全可移植的。
AGG 还是一个可以将不同的输出合并为一个统一的 API 的工具。
另外,在基于 Web 的应用程序中,可以使用 AGG在服务器端生成栅格图像。
而且 AGG 是完全跨平台的。
1.1.4. 反走样和子像素精度 反走样是在低分辨率设备上显示图像时用于改善视觉质量的一种广为人知的技术。
它基于人的视觉特性。
看看下图,尝试猜测一下它表达的意思。
这是用反走样发生绘制的单词。
根据 Kotelnikov-Shannon 定理,图像的最大频率远高于Shannon 极限。
现在来看看正常大小的同一幅图,能够很容易地认出“stereo”这个词。
然而,这两幅图是完全相同的。
第一幅仅仅是第二副的放大版本。
这个特性允许在累积经验的基础上重新构建缺失的信息。
反走样并没有让你看得更清楚,只是让你的大脑更好得运转并重构丢失的信息。
反走样的成果显而易见。
如它使得我们可以绘制出更加详尽的地图。
但是关键并不是反走样本身,而是可以利用子像素精度的技术绘制基元。
这对于线的视觉厚度尤其重要。
首先,如果利用了子像素精度,即使只使用