mtkView = MTKView(frame: self.view.frame, device: device)
mtkView.colorPixelFormat = .bgra8Unorm
mtkView.delegate = self
mtkView.sampleCount = 4
mtkView.isPaused = true
mtkView.enableSetNeedsDisplay = true
setFrameSize
被重写以触发重新显示。
每当视图调整大小时,它会在重新绘制所有内容之前缩放其旧内容。这会给人一种抖动的感觉。
我尝试将 MTKView 的层的 contentGravity
属性设置为非调整大小的值,但这完全搞乱了内容的比例和位置。似乎 MTKView 不希望我去调整该参数。
如何确保在调整大小期间始终正确地重新绘制内容?
layerContentsRedrawPolicy
设置为NSViewLayerContentsRedrawDuringViewResize
(在 Swift 中为.duringViewResize
) 有帮助吗? - Ken ThomasesMTKView
?例如,paused
、enableSetNeedsDisplay
和autoResizeDrawable
属性的设置是什么? - Ken ThomaseswaitUntilScheduled()
调用会有性能损失。你只需要在调整大小期间执行它。在那种情况下,理论上它会减慢窗口/视图响应调整大小的速度,直到你能够绘制帧,这基本上是你问题中隐含的要求。 - Ken Thomases