![]() |
1
3
解决这个问题的唯一方法是:
|
![]() |
2
2
OpenGL中的消除混叠通常很昂贵,因此在iOS上对核心动画禁用,因为处理资源有限。这里的关键词是“速度:核心动画”针对绘图速度进行了优化,这转化为动画的平滑度。如果优先考虑图像质量,则不应将核心动画与旋转变换一起使用。 对于核心动画中的某些任务,可以在层内容周围添加1 px的边框。如果没有消除混叠,边缘将锯齿状,但当内容不在边缘上时,它不会受此影响,而是因为纹理过滤而平滑。 |
![]() |
3
1
或许这将有助于: quick and dirty anti-aliasing... . 特别是确保启用了“消除混叠”。
|
![]() |
4
1
正如RyanZachry已经指出的,消除混叠将在这里帮助您。你在这里感受到的效果是“阶梯”效应。 像素是正方形的,因此很容易绘制直线(水平或垂直),而不会产生任何伪影。如果你在一个角度上画线,你将需要光栅化你的线。在试图将线条映射到像素时,绘制线条的算法需要进行近似。这种算法的一个例子是 bresenham's (非常流行并且易于实现,但不具有反混叠功能)。 它的作用是:
正如你在这张图片中看到的,在任何角度画一条线都会产生所谓的楼梯效果。为了避免这种效果,可以使用消除混叠。消除混叠实际上是信号理论的一部分。这是一种在低分辨率下表示高分辨率信号时最小化失真伪影(称为混叠)的技术。从上面的线条示例可以看出,这非常适用于计算机图形。
消除混叠确实很复杂,但其目的是通过近似每像素的线条来增强图片效果,而且还可以使用智能着色使线条出现在非像素精确的特定位置。
要在核心图形中启用内置消除混叠,请在执行旋转之前执行以下操作:
|