我认为没有适合您的简单标志。因为您在创建命令缓冲区时控制完整的渲染管道,所以 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()
// ...
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的视图中观察这个值,如下所示:
import Combine
class MyViewController: UIViewController {
let label = UILabel()
var cancellables: [AnyCancellable] = []
func subscribeToFrameTime() {
renderer.lastFrameTime
.sink { label.text = "\($0 * 1000) ms." }
.store(in: &cancellables)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
404 次 |
最近记录: |