Introduction
(译注:这篇 reference 好像没有写完,所以下面只是将官方释出的部分进行了翻译)
原文链接:http://www.antigrain.com/doc/scanlines/scanlines.agdoc.html
翻译:唐风
底层的 render 操作的是最简单的数据形式,当然它们本身也很简单。其实 pixel format renderer 并不是 AGG 必须的组成部分,它们是可以替换或是改写的。比如说,如果你有一个功能相似的 API,而且这个 API 带有硬件加速,那么使用这个 API 来代替纯软件的混合渲染(主要是 alpha 混合)会更好。当然,也可以使用 Intel SSE/SSE2 来编写优化过的 renderer。AGG 其它的渲染功能都是基于这些简单的类。
描画去锯齿的对象时我们首先要对它进行光栅化。AGG 中主要的光栅化技术是基于 scanline 的,也就是说,一个多边形会先转换成很多的水平扫描线,然后再逐个描画这些扫描线。同样的, scanline rasterizer 并不是唯一可以用于生成水平扫描线(scanline)的类,你也可以使用一些容器,甚至是你自己的 super-ultra-mega rasterizer 。
在从 rasterizer(光栅化器) 到 scanline renderer 之间的信息转换时,用到了 scanline 容器。一个 scanline 由很多的水平的、不相交的 span 组成。这些 span 按 x 轴排序。这就意味着并没有提供排序这个操作,必须在将 span 添加到 scanline 时就把顺序处理好。如果顺序不是按要求排列的,那么可能会出现未定义的行为。
AGG 中有以下三种 scanline 容器。
-
scanline_u - 未包装的 scanline 容器。
-
scanline_p - 包装过的 scanline 容器。
-
scanline_bin - 原始的,“带锯齿”的 scanline 容器。
前面两种容器可以包含去锯齿信息,第三种不行。
重要信息!
所有的 scanline 容器都为速度进行过优化,但没有考虑内存用量。事实上,它们会为最坏情况申请内存,所以有开销有点大。如果你只是使用少量的 scanline 的话,这不会成为瓶颈,但如果为存储整个形状而使用 scanline 的数组可能不是一个好主意,因为这会使用超出结果图像大小的内存量。
包装的(packed) scanline 与未包装的(unpacked) scanline 的区别在于, unpacked scanline 总是会为所有像素保存覆盖值(coverage value),包括那些全部覆盖在多边形内部的像素。而 packed scanlines 则会把具有相同 coverage value 的像素合并成 solid span。
看起来好像使用 packed 版的 scanline 总是会好一点,但在实践中并非如此。但你渲染一些大型的实心多边型时,使用 scanline_p 会更快,那是因为多边型的面积比周长要大很多(从像素的角度来衡量)。但是如果是渲染字符的时候绝对应该使用 scanline_u ,这样就能处理更少的 span 了,(scanline_u 会比 scanline_p)大约少产生三倍左右的 span,而 span 数本身就是一项重要的开销。同样的,在大多数 span 产生器中(比如 gradients, Gouraud shader, 以及 image 产生器等),span 的数量更加是(效能的)关键,所以一般也不会使用 scanline_p。
分享到:
相关推荐
•如果要用AGG的控件和窗体,要加入[AGG]\src\ctrl\*.cpp和[AGG]\src\platform\<OS>\*.cpp,头文件在[AGG]\include\ctrl和[AGG]\include\platform里 •如果要用到TrueType字体显示,要加入[AGG]\font_win32_tt目录下...
Agg-Sharp 是 Agg 的 .NET 移植。AGG 是一个开源的二维图形引擎。它提供一套结合了亚像素(subpixel accuracy)技术与反走样(anti-aliasing)技术的图形算法,实现高效率、高质量的二维图形处理功能。AGG 的另一个...
1 使用AGG的准备工作 1 2 AGG图形显示原理见下图: 1 3 要理解AGG的工作原理,先看一段代码: 2 4 顶点源(Vertex Source) 5 4.1 头文件 5 4.2 类型 5 4.3 画一条简单的箭头直线(基于此处代码) 6 4.4 自定义一个顶点...
AGG测试,一个AGG的测试事例。一个GDI和AGG在MFC下使用的例子。
开源跨平台2d图形库,agg2.5源码+文档
2d图形开发库AGG,跨平台渲染库,C源代码
保存&分享AGG图形库相关资料,文档+2.5源码
包括: 基于AGG算法库的通用图形接口设计.pdf AGG绝好资料.doc 介绍和推荐AGG.doc
agg二维绘图工具源码及入门例程及安装开发入门
AGG在windows系统visual studio 2013平台编译及开发;已经上传了编译成功的AGG.lib, 使用时将include文件夹添加到链接库即可。
一个很优秀的2D图形引擎. Anti-Grain Geometry (AGG) - Version 2.5 A high quality rendering engine for C++ Copyright (C) 2002-2006 Maxim Shemanarev
agg为开源的高效跨平台2D图形开发库,内部包含了大量的GDI图形绘制源码和示例!
1,AGG官方用户手册 2,英文原版 3,精心编辑完整索引 4,mnorst出品,必属佳作
AGG是一个开源的二维图形引擎,它提供了一个功能有限的SVG解析、渲染工具svg_viewer。我对svg_viewer做了如下改进: - 支持解析 、<ellipse> 元素,以及<rect> 的 rx、ry 属性(圆角矩形)。 - 支持格式为 rgb(ddd...
AGG Lite
Agg在Windows下的编译与使用 AGG(Anti-Grain Geometry)是一个开源免费的图形库。 官网地址: www.antigrain.com 环境: Win10 x64 Visual Studio 2013 字符集 Unicode 主要是编译称为Lib库,然后提供给其他程序...
agg_v2.0.0.apk
( agg-2.4-2.1.i386.rpm )
用AGG实现高质量图形输出.zip,AGG图像引擎介绍
AGG,全名:Anti-Grain Geometry,是一个开源的、高效的2D图形库。AGG的功能与GDI+的功能非常类似,但提供了比GDI+更灵活的编程接口,其产生的图形的质量也非常高,而且它是跨平台的,其宣传可以在非常多的操作系统...