gg第四十八课抗锯齿说明一

反锯齿是一个棘手的问题。如果你决定你喜欢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

gg第四十八课抗锯齿说明一