反锯齿是一个棘手的问题。如果你决定你喜欢gg,它终于在2 d图形解决你所有的问题,这是一个错误。没有这种能力的。你越担心质量问题越多。
让我们先从一个简单的矩形。
这里我们有一个矩形与精确积分坐标(1、1、4、4)。一切看起来很好,但理解和了解抗锯齿和亚像素精度的工作让我们由X和Y平移至0.5像素:
像素的强度成正比像素的面积覆盖的矩形。在实践中这意味着矩形看起来模糊。这并不是一个任性,这是一个必要因为> end1中间End2
让我们看看像素的中部地区第一个
,因为它是
简单的呈现。例如,如果直线
水平线是5
像素(节理)厚,所有的“封面”值
像素基于>
> end1中间End2
123
111111111111111111111111111111111111 321
555555555555555555555555555555555555
1257年7521
999999999999999999999999999999999999
123 555555555555555555555555555555555555
321
111111111111111111111111111111111111
嗯。较厚的线,我想就
真的是另一个地区感兴趣的
:
上
End1Center-Middle End2
底部的中间
这里,呈现两头一样。
上和
底部的中间区域会是反锯齿
“融入”地区
线,呈现为前面讨论的
“中间”
。Center-Middle部分将该地区
的
有一个常数阿尔法9的封面,可以充满
调用
矩形()原始。爆发前,
中心和底部
区域,假设一个新的线与10日我们将
有:
111111111111111111111111111111111111
上
555555555555555555555555555555555555
999999999999999999999999999999999999
999999999999999999999999999999999999
999999999999999999999999999999999999
Center-Middle
999999999999999999999999999999999999
999999999999999999999999999999999999
999999999999999999999999999999999999
555555555555555555555555555555555555
底部的中间
111111111111111111111111111111111111
,我想这可以概括说
有三个主要的
为抗锯齿呈现的任何类型的地区
类型的对象是
粗线,一个矩形,或任意路径:
1。很快不同地区α
计算为每个
像素。
2。缓变区域计算α
为整个
>行(垂直或水平)。
3。常数地区α
不改变。这可能是,
但不一定是一个矩形区域。
它发生,这是相当简单的将
水平/垂直行
和矩形到这些地区。垂直
线是一样的
水平如果我们交换“scan-column”
“线”。至于
矩形,我们必须处理的加入
。其地区
会分解如下:
TL-Corner上TR-Corner
左中Center-Middle正中间
BL-Corner底部的中间BR-Corner
这里,角落都“很快就不同,”
顶部和底部中间
使用调用“缓变”线()
原始,左侧和
中“缓变”使用调用
vline ()
原始(),Center-Middle是,再一次,
常数。
我最感兴趣的情况下
描述,但它发生
我可以分解任意路径
到
三个类型的地区之前调用一个渲染器。
这
域分解可能会如此昂贵的
沼泽任何好处
在某些情况下,我没有经历过这样的
算法。我会
认为有一些方法,也许在
每个扫描线基础
,而不是对整个路径,这将提供一个
速度提高。null