左上填充规则

 

    :对左上填充规则进行详细介绍的资料很少,而理解左上填充规则对于编写光栅化器至关重要。本文对光栅化的原理和左上填充规则进行了详细描述,描述的时候尽可能做到易懂、详尽,如果读者还是有不明白的地方请给我留言,我会将没有论述清楚的地方补充完善。

1 、概述

光栅化的时候通常会遇到一个术语,那就是左上填充规则( top-left rule ),它的作用是为了避免相邻的多边形重复绘制邻边。如图 1 所示,如果没有左上填充规则,绘制三角形 ABD  BCD 的时候,有可能同时绘制 BD 边,导致 BD 被绘制 2 次。乍一看,除了稍微影响点效率外,重复绘制好像也没什么坏处,不过在处理透明度和模板( stenciling )的时候,重复渲染三角形的邻边会让结果出现严重的瑕疵。

 

图1 相邻的三角形

2 、定义

说到左上填充规则,不得不先说光栅化。光栅化的本质是确定绘制哪些离散的像素点(更确切的说是像素块),如图 2 所示,填充图中的三角形时,光栅化器会决定对哪些像素着色。

一般来说,光栅化器的输入是多边形的顶点坐标,这些顶点坐标构成一个封闭的多边形。当需要填充该多边形时,一个直观的想法便是绘制所有位于多边形内部的像素。那又如何判断像素块位于多边形的内部呢?通常以像素块的中心点作为判断依据,只要像素块的中心点(图 2 中的叉叉)位于多边形内部,便认为该像素块也位于多边形内部。那么当像素块的中心点恰好在多边形的边上怎么办?如图 2 中三角形,有 6 个像素块的中心点和底边重合,在填充这个三角形的时候是否要对这 6 个像素块着色呢?这就是问题的关键所在,也是左上填充规则的由来之处。如果简单的认为像素都应着色或都不着色,会致使重复填充或出现漏点。

图2  三角形光栅化的示意图

 

左上填充规则约定,当像素块中心点和多边形的左边或者上边重合时,该像素块位于多边形内部,填充多边形时需要着色;相反,当像素块的中心点和多边形的右边或者底边重合时,该像素块位于多边形外部,填充多边形时不需要着色。比如,当需要光栅化一个 [0  5] 区间的正方形时,需要渲染 [0  4] 区间的所有像素块,而第 5 行(底边)和第 5 列(右边)的像素则不渲染,结果如图 3 所示。运用左上填充规则光栅化连续的多边形时,既不会有漏点,也避免了重复绘制。

图3  四边形的光栅化图

3 、左边和上边

首先看一下图 4 ,四个三角形的深黑色边是左边或上边,灰色变是右边或底边。图中对于左边和上边的确定有的很形象也很好理解,有的可能就不那么容易理解了,比如右上方的三角形,它的下面那条边更像是底边,而不是左边。其实除了右下方三角形的水平边是上边外,其余的黑色边都是左边,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值