我知道在SceneKit中,您可以在SKView
侧面启用横幅,以查看实时帧速率和其他有用的调试信息。但是MTKView
呢?我似乎找不到要启用的属性,也找不到如何查询当前帧速率的属性。 (因为我正在渲染帧率为0.5fps左右的东西)
答案 0 :(得分:0)
我认为您没有简单的标志。由于您在创建命令缓冲区时可以控制整个渲染管线,因此Metal无法知道将自定义文本插入渲染通道的位置。
您可以在管道中注入自己的渲染过程(基于var showDebugInformation = true
之类的标志),但这听起来有些工作。
我可能会在draw
方法中手动监视帧时间,并在每次绘制时更新标签。粗略的轮廓可能看起来像这样:
var previousFrameAtTime: Date
let lastFrameTime = CurrentValueSubject<TimeInterval, Never>(.infinity)
func draw(in view: MTKView) {
lastFrameTime.send(Date().timeIntervalSince(previousFrameAtTime))
previousFrameAtTime = Date()
// ...
}
然后您可以在视图中观察该值,如下所示:
import Combine
class MyViewController: UIViewController {
let label = UILabel()
var cancellables: [AnyCancellable] = []
func subscribeToFrameTime() {
renderer.lastFrameTime
.sink { label.text = "\($0 * 1000) ms." }
.store(in: &cancellables)
}
}