gpt4 book ai didi

ios - SceneKit CALayer 锐化绘图

转载 作者:行者123 更新时间:2023-12-01 23:36:08 25 4
gpt4 key购买 nike

我正在尝试绘制 UIBezierPaths 并将它们显示在 SCNPlane 上,尽管我得到的结果非常不清晰 (See in the image)我怎样才能让它更锐利?

let displayLayer = CAShapeLayer()
displayLayer.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
displayLayer.path = path.cgPath
displayLayer.fillColor = UIColor.clear.cgColor
displayLayer.strokeColor = stroke.cgColor
displayLayer.lineWidth = lineWidth
let plane = SCNPlane(width:size.width, height: size.height)
let material = SCNMaterial()
material.diffuse.contents = displayLayer
plane.materials = [material]
let node = SCNNode(geometry: plane)

我尝试增加 displayLayer.frame 的大小,但这只会让事情变得更小。

感谢您的回答!安德拉斯

最佳答案

这让我发疯,所以希望这个答案可以帮助其他偶然发现这个问题的人。我将 CALayer 映射到 SCNMaterial 纹理以在 ARKit 场景中使用,但所有内容都是模糊/像素化的。将 CALayercontentsScale 属性设置为 UIScreen.main.scale 没有执行任何操作,也没有使用 shouldRasterize > 和rasterizationScale

解决方案是将图层的框架设置为所需的框架,乘以屏幕的比例,否则 Material 将按比例变换图层以适应纹理。换句话说,图层的大小需要是其所需大小的 3 倍。

让图层 = CALayer()
Layer.frame = CGRect(x: 0, y: 0, 宽度: 500 * UIScreen.main.scale, 高度: 750 * UIScreen.main.scale)

关于ios - SceneKit CALayer 锐化绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com