【发布时间】:2022-12-05 20:04:12
【问题描述】:
我正在尝试接收帧数据并以 60fps 的速度渲染到 MTKView。
我的MTKView和Reference about SwiftUI using MTKView中的PreviewView.swift几乎一样
这是我尝试刷新和发布数据的代码:
NDI_Queue.async {
while(self.Connected){
if let buf = self.PrepareFrame(){
let ciImage = CIImage(cvImageBuffer: buf)
DispatchQueue.main.async {
self.NDI_Frame = ciImage
}
}
}
}
我使用PrepareFrame()从uint8_t*抓取并创建CVPixelBuffer,之后,我将其转换为CIImage。
最后我使用@Published更新NDI_Frame并在主线程上刷新到MTKView。
不幸的是,视图滞后,帧率非常不稳定。
在我的代码中创建 CVPixelBuffer 只占用大约 5% 的 CPU 使用率。
但是当我发布数据时主线程超载。
抱歉,我是 Swift 的新手。
请告诉我我哪里做错了。
欣赏它。
【问题讨论】:
-
您需要edit您的问题以minimal reproducible example 的形式包含所有相关代码,以便使问题切题。