SCNRenderer 快照并不总是应用抗锯齿
SCNRenderer snapshot doesn't always apply antialiasing
问题来了。左边是我在 scnView 中看到的。右边是我从那个场景的 SCNRenderer snapshot
得到的。我在卡特琳娜。
我在 UI 中有一个场景和一种方法来制作该场景的快照。这是我的做法
snapshotRenderer.scene = scnView.scene
snapshotRenderer.snapshot(atTime: mySceneTime, with: mySize, antialiasingMode: SCNAntialiasingMode.multisampling4X)
我试过的
我的理论是 snapshot
方法在整个渲染周期结束之前抓取渲染内容,并且所有抗锯齿样本都已完成(如果有的话)。该理论基于这样一个事实,即在应用抗锯齿之前,我确实在我的 scnView
中看到了相同的粗糙边缘一秒钟。
所以,不幸的是,我尝试用
触发一个循环
snapshotRenderer.scene!.isPaused = false
snapshotRenderer.isPlaying = false
和
self.snapshotRenderer.update(atTime: mySceneTime)
还有一个SCNTransaction.begin()
和.commit()
。但没有任何效果。
我也试过在上面的尝试后用DispatchQueue.main.asyncAfter
等待3秒,然后调用快照。那也没用。
视图是否已将 isJitteringEnabled
设置为 true
?屏幕截图似乎启用了抗锯齿功能,但这可能只是因为图片在上传到那里时缩小了尺寸。
问题来了。左边是我在 scnView 中看到的。右边是我从那个场景的 SCNRenderer snapshot
得到的。我在卡特琳娜。
我在 UI 中有一个场景和一种方法来制作该场景的快照。这是我的做法
snapshotRenderer.scene = scnView.scene
snapshotRenderer.snapshot(atTime: mySceneTime, with: mySize, antialiasingMode: SCNAntialiasingMode.multisampling4X)
我试过的
我的理论是 snapshot
方法在整个渲染周期结束之前抓取渲染内容,并且所有抗锯齿样本都已完成(如果有的话)。该理论基于这样一个事实,即在应用抗锯齿之前,我确实在我的 scnView
中看到了相同的粗糙边缘一秒钟。
所以,不幸的是,我尝试用
触发一个循环snapshotRenderer.scene!.isPaused = false
snapshotRenderer.isPlaying = false
和
self.snapshotRenderer.update(atTime: mySceneTime)
还有一个SCNTransaction.begin()
和.commit()
。但没有任何效果。
我也试过在上面的尝试后用DispatchQueue.main.asyncAfter
等待3秒,然后调用快照。那也没用。
视图是否已将 isJitteringEnabled
设置为 true
?屏幕截图似乎启用了抗锯齿功能,但这可能只是因为图片在上传到那里时缩小了尺寸。