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?屏幕截图似乎启用了抗锯齿功能,但这可能只是因为图片在上传到那里时缩小了尺寸。