是否可以修复抗锯齿 SKShapeNodes 的模糊性?

Posted

技术标签:

【中文标题】是否可以修复抗锯齿 SKShapeNodes 的模糊性?【英文标题】:Is it possible to fix the fuzziness of antialiased SKShapeNodes? 【发布时间】:2013-09-25 19:42:39 【问题描述】:

我正在尝试在游戏中使用 SKShapeNodes,发现抗锯齿 SKShapeNodes 非常模糊。

没有抗锯齿:

抗锯齿:

有没有办法在 SpriteKit 中使用 SKShapeNodes 的抗锯齿来减少线条上的阶梯,但又不会像上面第二张图片那样使线条变得模糊?

【问题讨论】:

【参考方案1】:

不——这就是形状节点上的“抗锯齿”效果。你可能期待看到更像multisampling 的东西,但这不是 SpriteKit 在这里所做的。要获得您正在寻找的平滑且不模糊的线条,您必须将形状绘制到图像中,然后将其显示在 SKNode 中。您还可以考虑 API 上的filing an enhancement request。

【讨论】:

【参考方案2】:

这不是一个很好的解决方案,但它确实有效:创建一个更大的 SKShapeNode 并将其缩小。

正常:

let shape = SKShapeNode(circleOfRadius: 10)

缩放:

let scaleFactor: CGFloat = 2
let shape = SKShapeNode(circleOfRadius: 10 * scaleFactor)
shape.xScale = 1 / scaleFactor
shape.yScale = 1 / scaleFactor

这使得渲染看起来不那么模糊,但请注意,将 SKNodes 添加为子节点时可能会导致令人沮丧的问题,因为它们可能会被递归缩放并最终变得比您预期的要小。 p>

【讨论】:

以上是关于是否可以修复抗锯齿 SKShapeNodes 的模糊性?的主要内容,如果未能解决你的问题,请参考以下文章

Firefox 没有抗锯齿缩放背景 svg

iOS 8 Safari webgl 没有抗锯齿

图形学笔记五 视口变换 光栅化 抗锯齿

谷歌地图GroundOverlays默认情况下是不是具有抗锯齿功能?

画布的 drawImage() 不进行亚像素渲染/抗锯齿是不是有技术原因?

bitmap缩放时抗锯齿