我正在试验 SwiftUI 和 Metal。我有 2 个窗口,一个带有各种列表和控件,另一个带有金属窗口。
我让滑块数据更新了 Metal 窗口,但是当我移动滑块时,FPS 从 60 下降到 25 左右。我删除了视图之间的所有链接,移动滑块仍然会降低金属窗口中的 FPS。
似乎列表视图也会减慢 FPS。
我在启动时使用以下方法创建金属窗口:
metalWindow = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
metalWindow.center()
metalWindow.setFrameAutosaveName("Metal Window")
metalWindow.makeKeyAndOrderFront(nil)
mtkView = MTKView()
mtkView.translatesAutoresizingMaskIntoConstraints = false
metalWindow.contentView!.addSubview(mtkView)
metalWindow.contentView!.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|[mtkView]|", options: [], metrics: nil, views: ["mtkView" : mtkView!]))
metalWindow.contentView!.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[mtkView]|", options: [], metrics: nil, views: ["mtkView" : mtkView!]))
device = MTLCreateSystemDefaultDevice()!
mtkView.device = device
mtkView.colorPixelFormat = .bgra8Unorm
commandQueue …Run Code Online (Sandbox Code Playgroud)