简要评说Adobe的FlashPlayer的渲染算法--续1

在扫描线算法(ScanLine)中,其核心是通过计算扫描线和各边的交点,并通过特定的法则填充两个交点来完成一条扫描线的绘制,及我们可以抽象的理解在2D矢量图形引擎中,所有的Object / Shape,甚至一点简单的直线(直线因为具有端点-----不同的笔触)都可以理解为多边形的填充,所以为什么我们称之为填充法则(Fill Rule);

传统的2D矢量图形引擎(OpenVG / GingkoVG)中支持两种填充法则:奇偶填充法则、非零填充法则:

l  奇偶填充法则(Even/Odd Fill Rule):奇偶填充法则的核心算法是通过确认扫描线和各边相交的次数 ----- 是奇数还是偶数决定是否填充;通常情况下,在扫描线与边相交次数为奇数开始填充,偶数结束填充;在奇偶填充法则中,各边是没有方向性的;

l  非零填充法则(Non-Zero Fill Rule):非零填充法则的核心算法是根据扫描线与有向边相交的数值决定是否填充,及假定向上的边为正向边,向下的边为负向边,扫描线与正向边相交及加1,与负向边相交及减1,根据这个数值我们决定是否填充:如果该值为非零的值及开始填充,为零则结束填充;

l  对于边边填充法则(Edge-Edge fil Rule):我们可以简单理解为具有两个不同着色算法的奇偶填充法则;

因此,如下针对两种不同的填充法则,以下图形应该很好理解:

 

figure-a-1

FlashPlayer中允许在一个Shape的不同边具有不同的着色方式 ---- 一个通常很容易使人困惑的地方;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值