当前位置: 首页 > 编程日记 > 正文

AGG 学习笔记

我了解的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本身的功能和代码结构,导致只能运行其提供的sample。AGG通过泛型,跨平台性做的很好,可以在许多开发环境中直接编译。我们可以在VC6中直接将其编译成静态链接库,然后将所有的.h文件拷入到VC98\include\agg中,将编译完的.lib文件拷入到VC98\lib中,这样我们便可能在VC6中通过alt+F7的link-> input中加载你所编译的.lib文件达到配置agg的目的,你新建一个cpp文件可以直接#include <agg/agg_basics.h>....之后再有一个继承agg_platform_support的实现和agg_main即可完成一个相应的框架。

为了作出一个进度报告,将前一阶段的工作书面化一下,所以画了几个图,在这只能凭记忆,恢复一下了。
                                        agg_graphic_core
rendering buffer (frame buffer 我们可以理解为显存)存储一块连续的内存区域,不知道自身具体存储内容的结构,只按照行的长度,向外提供行指针,有宽、高、步长属性。
span render 水平区段绘制器,用于绘制scanline中的段,与rendering buffer直接交互,将scanline的内容映射到显存中。
outline 轮廓线,将矢量数据转化为点阵格式 rasterizer 内部类。
scanline 将点阵格式的点集合,转化成为renderer使用的水平区段。
renderer 将点阵数据填上颜色放入显存中
rasterizer 栅格器,用于转化上层的矢量数据到栅格集合中。
Vector transitions 矢量变化,一个复杂的集合对应着n多convs 对点集合的操作。

今天突然想起一个比方来介绍agg里面的一组关系,rasterizer,scanline,和renderer之间的关系.它们就如同你在黑板面前拿着一本一册,用粉笔画黑板报.那本画册就是rasterizer,他存储图形,黑板套装(包括粉笔)就是我们的renderer,而你就是中间的scanline. AGG中就是通过scanline把rasterizer中存放的栅格信息用粉笔pixfmt_renderer转化到黑板rendering_buffer中,完成最终的绘制.具体过程大家还是要读代码~~:)!!!好运

转载于:https://www.cnblogs.com/Kane_zzt/archive/2009/01/12/1373995.html

相关文章:

1073 Scientific Notation

笔记&#xff1a;这是我迄今为止写过的最复杂的字符串处理算法题。 收获&#xff1a;分而治之&#xff0c;想不清楚就自己设计测试用例和结果。列举然后归类。 以下是程序流程图 #include<cstdio> #include<cmath> #include<cstring> #include<algorith…

几个笔试题目总结

1、阿里某个笔试题&#xff0c;两个字符串text&#xff0c;query&#xff0c;找到text中包含的最长的query的字串&#xff1a; public static String subStr(String text, String query) {if (text ! null && query ! null) {int length query.length();for (int i 0…

baidu mp3竟然还加密,太扯了

baidu mp3竟然还加密&#xff0c;太扯了 public class BaiduHelper { static int F 0; static string I "", J ""; static string O ""; static string E ""; static int[] K new int[1000…

Ubuntu 之linux与windows互传文件

Windows系统下与linux传输文件 windows环境下&#xff0c;windows传出数据到linux下 确保ubuntu安装了ssh服务端。如果没有安装&#xff0c;使用以下命令安装&#xff1a; sudo aptget install ssh service sshd restart 2.windows下下载pscp.exe软件从PuTTY官方网站下载pscp.e…

1048 数字加密 --非满分

16/20 非满分&#xff0c;待来日复习双指针再分析原因 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #include<bits/stdc.h> using namespace std;void reverStr(char str[]){int len strlen(str);for(int i0;i&l…

端到端对话模型新突破!Facebook发布大规模个性化对话数据库

作者&#xff5c;Pierre-Emmanuel Mazare 等译者&#xff5c;郝毅编辑&#xff5c;Debra出处丨 AI 前线AI 前线导读&#xff1a;聊天机器人是目前非常流行的一种人工智能系统。目前大部分聊天机器人的衔接性都不是很好&#xff0c;尤其是在没有主动的重调优策略下训练出的端到端…

上传文件大小的配置Webcong

修改Webcong文件:<system.web><httpRuntime maxRequestLength"40690" useFullyQualifiedRedirectUrl"true" executionTimeout"6000" useFullyQualifiedRedirectUrl"false" minFreeThreads"…

1001 A+B Format

由于逗号的有无是从末尾数起&#xff0c;满足三个数(且高位还有数)就加逗号&#xff0c;所以有必要把字符串反转&#xff0c;然后寻找数组下标和3的关系 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace st…

[转]数据库建立索引的一般依据

建立索引常用的规则如下&#xff1a; 1、表的主键、外键必须有索引&#xff1b; 2、数据量超过300的表应该有索引&#xff1b; 3、经常与其他表进行连接的表&#xff0c;在连接字段上应该建立索引&#xff1b; 4、经常出现在Where子句中的字段&#xff0c;特别是大表的字段&…

为图片添加半透明遮罩效果

平时为图片添加半透明遮罩效果&#xff0c;我的做法如下&#xff1a;利用标签i实现背景半透明遮罩。当鼠标hover时, 提高i的背景色透明度值background-color: rgba(0, 0, 0, .6) <p class"opacity-black-position"><a href"#"><img src&quo…

linux下typora安装

# optional, but recommended sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE# add Typoras repository sudo add-apt-repository deb https://typora.io ./linux/ sudo apt-get update# install typora sudo apt-get install typora

1005 Spell It Right

基本步骤是&#xff1a;100位的数字longlong也存不下&#xff0c;作为字符串读入&#xff0c;对字符串进行遍历&#xff0c;每个字符减去0加到总和sum上&#xff0c;再将整形的总和sum转化为字符串&#xff0c;对得到的字符串进行遍历&#xff0c;将每个字符映射到英文单词上。…

C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

在多线程的程序中&#xff0c;经常会出现两种情况&#xff1a; 一种情况&#xff1a; 应用程序中&#xff0c;线程把大部分的时间花费在等待状态&#xff0c;等待某个事件发生&#xff0c;然后才能给予响应 这一般使用ThreadPool&#xff08;线程池&#xf…

使用Node.js快速搭建WebSocket server

原文地址&#xff1a;http://my.oschina.net/yushulx/blog/309413 目录[-] 安装服务端客户端参考安装 ?1npm install ws服务端 server.js ?12345678var WebSocketServer require(ws).Server, wss new WebSocketServer({port: 8080});wss.on(connection, function(ws) {ws.o…

android采用MVP完整漫画APP、钉钉地图效果、功能完善的音乐播放器、仿QQ动态登录效果、触手app主页等源码...

Android精选源码 一个可以上拉下滑的Ui效果&#xff0c;觉得好看可以学学 APP登陆页面适配 一款采用MVP的的完整漫画APP源码 android实现钉钉地图效果源码 一个使用单个文字生成壁纸图片的app android 仿QQ动态背景登录效果源码 功能完善的Android 手机本地音乐文件播放器 andr…

1035 Password

很适合用结构体数组的一道题 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;struct info{char usr[11]"";char pwd[11]"";bool changed false; }infos[1010];int main(){int n,…

Android -- DrawerLayout

抽屉效果的导航菜单 喜欢知乎的都应该装的用知乎日报吧~这里指Android的不是IOS的。知乎日报的导航菜单就是用DrawerLayout实现的。 觉得这种侧滑的抽屉效果的菜单很好。 不用切换到另一个页面&#xff0c…

Socketserver 笔记

引入Socketserver的背景&#xff1a;我们之前使用socket编程的时候&#xff0c;Server端创建一个连接循环&#xff08;建立连接&#xff09;一个通信循环&#xff08;基于一次连接建立通信循环&#xff09;&#xff0c;&#xff08;这里的黏包问题我们的实现方式是&#xff1a;…

Delphi 调用C#编写的WebService 参数为Null解决方法

今天测试.net 2.0的WebService&#xff0c;发现了一个大问题。就是无法获取参数&#xff0c;参数永远是null。当然了使用.net调用 没有任何问题&#xff0c;web测试页也正常。不论是Delphi7还是java调用的结果的都是一样的&#xff0c;难道是.net 2.0的Bug&#xff1f; 测试结…

1025 PAT Ranking

1. 考生的编号是数字字符串&#xff0c;但是没必要转化成整数再比较&#xff0c;可以直接用strcmp() 2. 对整体的排名进行编号时所有信息都已经齐备&#xff0c;可以边编号边输出 3. 需要有些思量的地方是部分编号&#xff0c;当当前学生的分数不等于他上一个该怎么办 4. 真…

C#编写的多生产者多消费者同步问题

// 多个生产者和多个消费者&#xff0c;能生产n个产品的情况using System; using System.Threading;public class HoldIntegerSynchronized{private int[] buffer; //缓冲区private int occupiedBufferCount 0;private int readPosition 0 , writePosition 0;//下一个读到的…

展望2009,回眸2008

2008年真正的过去了&#xff0c;已经感觉不到2008年的存在。 2009年来了&#xff0c;似乎真正的来了。 生活的压力更大了&#xff0c;工作也不太顺利。 希望越来越好&#xff0c;也不知道是不是真的该跳槽了。 待在这里很郁闷。 转载于:https://www.cnblogs.com/tacker/archive…

m_Orchestrate learning system---七、如何快速学好前端

m_Orchestrate learning system---七、如何快速学好前端 一、总结 一句话总结&#xff1a;看视频啊&#xff0c;系统看视频啊 1、如何解决单词数字太长超出边界的问题&#xff1f; word-wrap 把编辑删除都挤跑了 2、amaze ui中a标签和button标签可以互换么&#xff1f; 其实弄上…

1062 Talent and Virtue

1.在结构体里面设置total_grades属性是明智之举&#xff0c;但是不可以在结构体内得到total_gradesvirtue_gradetalent_grade; 2.弄清题意&#xff0c;对人进行分类&#xff0c;等级越高type值越小&#xff0c;但是注意分的类别也许出现交叉的情况&#xff0c;细的要出现在粗的…

用百度直达号获取新用户 让顾客直达商家服务

直达号是什么? 直达号&#xff0c;商家在百度移动平台的官方服务账号。基于移动搜索、账号、地图、个性化推荐等多种方式&#xff0c;让顾客随时随地直达商家服务。 直达号其实就是两个功能&#xff1a;  √ 提供一个手机网站模板&#xff0c;入住商家可以建自己的手机网站。…

【Quartz】实现接口封装化(二)

原文:【Quartz】实现接口封装化&#xff08;二&#xff09;前言 通过昨天的努力终于算是了解Quartz这个定时器的简单使用&#xff0c;为了更深一步的了解和基于以后希望在项目中能使用他。所有我对他做了一下简单的封装操作&#xff0c;便于以后从新建立新工作和触发器&#…

怎么成为优秀的软件模型设计者?

作者&#xff1a;Scott Ambler著&#xff0c;乐林峰 译 本文选自&#xff1a;www.umlchina.com 2002年03月25日 我们期待自己成为一个优秀的软件模型设计者&#xff0c;但是&#xff0c;要怎样做&#xff0c;又从哪里开始呢&#xff1f; 将下列原则应用到你的软件工程中&…

1012 The Best Rank

思路&#xff1a;读入全部的数据之后&#xff0c;按照四个cmp函数对数组进行排序&#xff0c;给每生的4个科目的排名赋值&#xff0c;读入要检验的id后使用strcmp对数组中的id进行遍历(幸好这里数组大小和要检验的数目乘积不超过4万)&#xff0c;如果找到了相同id,调用写好的得…

SDWebImage使用——一个可管理远程图片加载的类库

SDWebImage托管在github上。https://github.com/rs/SDWebImage 这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。 将SDWebImage类库添加入工程时&#xff0c;一定注意需要添加MapKit.framework&…

EXECL使用技巧(转)

2007-03-18 09:07 一、求字符串中某字符出现的次数&#xff1a; 例&#xff1a;求A1单元格中字符"a"出现的次数&#xff1a; LEN(A1)-LEN(SUBSTITUTE(A1,"a","")) 二、如何在不同工作薄之间复制宏&#xff1a; 1、打开含有宏的工作薄&#xff0c…