AGG反锯齿绘图库的学习笔记(一)
来源:互联网 发布:无主之地2年度版淘宝 编辑:程序博客网 时间:2024/05/19 03:19
很久不在CSDN上晃了,这几天突发奇想研究了AGG,有些心得,于是想起了CSDN,也算是show一下心得吧!!
AGG是一个很优秀的反锯齿绘图库,比GDI+要酷很多,也快很多,但是这个东东是出了名的难以使用。我很早就听说了这个NB的东东,据说做地图显示那帮孙子,要不会用AGG,都不好意思和人打招呼,大约 在2008,我尝试研究过几个小时,但是觉得完全无法理解,放弃了。这段时间稍微有些空,突然记起了这个东东,总觉得没搞定它是对自己智商的侮辱,所以我决定搞定它。
上网查了一下,这么些年,似乎没人留下过如何使用AGG的中文资料,AGG自己的英文文档仍然和2008年的时候一样糟糕,AGG的作者似乎讨厌文档,这么伟大一个软件作品,他留了几千个单词吧(不过他写了很多没有任何说明的例程,没入门的情况下,这些例程简直不是人看的,但执行起来很酷),这似乎是大牛们的一贯做法,“俺创造”,你们来发掘宝藏吧!
AGG的困难在于它把C++泛型用到了极致,简直过度使用啊,AGG的类型之多,让人首先就晕掉,然后再也没兴趣学习下去,我以极大的毅力坚持了8个小时啊,仅仅搞明白它的体系。
AGG作者,大拿Maxim Shemanarev说,Microsoft GDI+做的很不好,虽然对用户来说,很容易理解,很好用,但是不能满足2D图像学的要求,出图质量不好,还很慢,于是Maxim Shemanarev化了4年时间(中途歇了两年)做了AGG。做完了他说“Anti-Grain Geometry is not a solid graphic library and it's not very easy to use. I consider AGG as a “tool to create other tools”. It means that there's no “Graphics” object or something like that, instead, AGG consists of a number of loosely coupled algorithms that can be used together or separately. All of them have well defined interfaces and absolute minimum of implicit or explicit dependencies.”(AGG不算一个完整的绘图库,它有点不容易使用,我认为AGG是制造工具的工具,也就是说AGG没有Graphics对象这类的东西,AGG是一系列松散或者紧密耦合的绘图算法集合,这些算法之间都有定义得很好的接口和最优的相关性)
AGG的确只是一堆反锯齿绘图算法,样条曲线算法,Gamma矫正算法,坐标系变换算法....构成的泛型C++库,幸亏哥对坐标变换矩阵等等数学问题还有些涉猎,对C++也是十数年的历史,否则这堆代码特莫就不是代码,而是一堆数学公式。
AGG提供的图片,表明GDI+的反锯齿做得不好。
AGG的坐标变换系统以及优秀的反锯齿插值算法,可以看出绘制的狮子在尺寸变换的时候失真很小。
- AGG反锯齿绘图库的学习笔记(一)
- AGG反锯齿绘图库的学习笔记(二)
- android 绘图 反锯齿办法
- AGG绘图库编译方法
- Agg学习笔记
- D3D学习笔记之五---渲染模式的改变,反锯齿,全屏的设置
- gdi+ 的反锯齿
- 我的android绘图学习笔记(一)
- 计算机绘图 学习笔记(一)
- OpenCV学习笔记(一):绘图操作
- 绘图与动画学习笔记(一)
- matlab学习笔记(一)---二维绘图
- R基础绘图学习笔记(一)
- RaphaelJS 的反锯齿设置
- AGG文档翻译(一)
- 锯齿与反锯齿
- AGG-SVG学习笔记 [2015-07-07]
- IOS绘图有锯齿的解决方案
- 工作
- adb 配置环境变量 与命令解释
- 理想中的个人资料库管理软件的功能
- 可怕的明文密码
- 浅论关于创意的分享与保密
- AGG反锯齿绘图库的学习笔记(一)
- oracle基础之存储结构
- poj 2081Recaman's Sequence
- 通过Dalvik加载自定义类(而不是从默认的dex文件里面去加载)
- Oracle架构总览
- 简单单谈谈极限编程(ExtremeProgramming,简称XP编程)
- [Oracle dba]-模式与用户
- [Oracle dba]-模式与用户
- ThreadPoolExecutor的例子与应用方式