AGG第四课局限性-创新互联
1前言
AGG渲染抗锯齿图像的边界,似乎永远是模糊边界,经研究,是由于使用亚像素精度反走样,边界会有半个像素的模糊。导致多个图像重叠的边界出现颜色一样的问题。正如,作者所言,不要以为采用AGG,就能够解决一切的问题,正所谓道高一丈,魔高一尺。任何的设计都是折中的方案,对于问题,只能够采取规避的方式解决。后续将会持续关注AGG的局限性。
创新互联建站专注于网站建设|成都企业网站维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖履带搅拌车等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身策划品质网站。2 重叠区域的边界着色问题
1 代码展示
void TestBlackBorden()
{
agg::rendering_buffer &rbuf = rbuf_window();
agg::pixfmt_bgr24 pixf(rbuf);
typedef agg::renderer_base
renderer_base_type renb(pixf);
typedef agg::renderer_scanline_aa_solid
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.
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:AGG第四课局限性-创新互联
标题URL:http://scyanting.com/article/ejoeh.html