1前言

AGG渲染抗锯齿图像的边界,似乎永远是模糊边界,经研究,是由于使用亚像素精度反走样,边界会有半个像素的模糊。导致多个图像重叠的边界出现颜色一样的问题。正如,作者所言,不要以为采用AGG,就能够解决一切的问题,正所谓道高一丈,魔高一尺。任何的设计都是折中的方案,对于问题,只能够采取规避的方式解决。后续将会持续关注AGG的局限性。

2 重叠区域的边界着色问题

1 代码展示

void TestBlackBorden()

{

agg::rendering_buffer &rbuf = rbuf_window();

agg::pixfmt_bgr24 pixf(rbuf);

typedef agg::renderer_base<agg::pixfmt_bgr24> renderer_base_type;

renderer_base_type renb(pixf);

typedef agg::renderer_scanline_aa_solid<renderer_base_type>renderder_scanline_type;

renderder_scanline_type rensl(renb);

agg::rasterizer_scanline_aa<> ras;

agg::scanline_u8 sl;

ras.reset();

ras.add_path(agg::ellipse(100,150,100,100));

agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(255,0,0));

ras.add_path(agg::ellipse(200,100,100,100));

agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,255,0));

ras.add_path(agg::ellipse(200,200,100,100));

agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba8(0,0,255));

}

2 问题描述

三个实心圆形成三个环,并且每个圆有重叠的部分,可以看到重叠的边界出现了黑色的弧线。

按照正常的逻辑,边界不是红色,就是蓝色,或者绿色。实际上出现了混合的颜色,抗锯齿的效果采用混合颜色的方式,将底层的颜色和覆盖的颜色进行了混合(alpha-blending),实际上就会显示混合后的颜色。

如下是作者的描述:

I only flipped your p_w_picpath horizontally. Itshows how the colortriplets are

placed and explains this effect. But youare right, these"black borders"

will be seen on any device. To get rid ofthem you need to use gamma

correction. Seeexamples/gamma_correction.cpp.

按照作者的思路进行了gamma的设置,当然不排除设置的错误,没有理解gamma_correction这个例子。

开发者回应:

For my display a gamma of 2.5 looks good. Ithink I will add someuser

defined gamma option to my application. Bytime i will have to delve

into this topic more deeply.

转载于:https://blog.51cto.com/fengyuzaitu/1961152

AGG第四课 局限性相关推荐

  1. 第四课 脱壳必备知识要点及方法

    第四课  脱壳必备知识要点及方法 今天所要讲的是这高级篇中最为关键,最为重要的一课,希望大家能认真学习,反复推敲,举一反三学习脱壳的各种方法,当然有的时候可能需要几种方法一起使用,今后我们也会一点一点 ...

  2. 孙鑫mfc学习笔记第十四课

    第十四课 网络的相关知识,网络程序的编写,Socket是连接应用程序与网络驱动程序的桥梁,Socket在应用程序中创建,通过bind与驱动程序建立关系.此后,应用程序送给Socket的数据,由Sock ...

  3. 第四课.LinuxShell编程

    第四课目录 什么是Shell Shell编程 创建脚本 注释 Shell变量 基本运算 字符串,数组,分支循环,函数 应用实例 猜数字 获取CPU使用情况 探测本地网络 什么是Shell 有人说Lin ...

  4. 第四课:算法效率的度量和存储空间需求

    第四课 本课主题: 算法效率的度量和存储空间需求 教学目的: 掌握算法的渐近时间复杂度和空间复杂度的意义与作用 教学重点: 渐近时间复杂度的意义与作用及计算方法 教学难点: 渐近时间复杂度的意义 授课 ...

  5. NeHe OpenGL第二十四课:扩展

    NeHe OpenGL第二十四课:扩展 扩展,剪裁和TGA图像文件的加载: 在这一课里,你将学会如何读取你显卡支持的OpenGL的扩展,并在你指定的剪裁区域把它显示出来.   这个教程有一些难度,但它 ...

  6. 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  7. Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”

    Coursera公开课笔记: 斯坦福大学机器学习第四课"多变量线性回归(Linear Regression with Multiple Variables)" 斯坦福大学机器学习第 ...

  8. 新手第四课-PaddlePaddle快速入门

    新手第四课-PaddlePaddle快速入门 文章目录 新手第四课-PaddlePaddle快速入门 PaddlePaddle基础命令 计算常量的加法:1+1 计算变量的加法:1+1 使用Paddle ...

  9. 计算机病毒ppt教案免费,第十四课 计算机病毒 课件(共14张ppt)+教案

    第十四课 计算机病毒 课件(共14张ppt)+教案 ==================资料简介====================== 第十四课 计算机病毒 课件:14张PPT 第十四课 计算机 ...

最新文章

  1. Axure 部件的交互样式
  2. Maven--资源文件resource的问题
  3. Ubunt 配置网络服务
  4. 怎么隐藏Windows11开始菜单中的推荐面板
  5. JAVA中增强循环中用线程_在Java中以循环方式运行线程
  6. 在Oracle中写出性能优良的SQL语句
  7. bzoj 3359: [Usaco2004 Jan]矩形(DP)
  8. 联网玩具CloudPets 泰迪熊泄漏数百万语音信息
  9. mysql实用教程的数据构造
  10. “熊猫烧香”有新变种 可自动下载病毒
  11. java web Excel在网页预览
  12. 评选最佳文本编辑器-UltraEdit From善用佳软
  13. bo耳机h5使用说明_五分钟了解Bamp;O耳机音箱能不能买
  14. 恩格列净治疗心衰获得FDA快速通道资格
  15. 在美国租房子需要考虑什么问题?
  16. 使用Java生成思维导图
  17. mysql查询同名同姓重名人数,全国同名同姓人数在线查询,重名率查询
  18. ios获取UUID的方法
  19. 国内主要的广告联盟背景
  20. 轻松解决IDEA2020“Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:xx“

热门文章

  1. C++ 继承和派生 及 学生管理范例
  2. 善用各类知识管理工具,达到事半功倍的效果
  3. 英伟达再出GAN神作!多层次特征的风格迁移人脸生成器
  4. Java反射在整个程序运行中的位置
  5. CentOS7 minimal 没有netstat命令
  6. openStack 租户控制台修改虚拟机账户密码
  7. 《Zabbix-ICMP ping监控添加方法》-7
  8. “2016智能终端峰会新闻发布会暨移动信息化可信选型认证结果发布会” —— 在京成功召开...
  9. 网络流之 最短增广路算法模板(SAP)
  10. 使用ImageMagick 的提示与技巧