MTKView 清晰显示



我想在应用程序退出活动状态后立即将MTKView(或GLKView/CAEAGLLayer(的内容设置为黑色。将其设置为透明颜色(例如黑色(并显示它的最快和最可靠的方法是什么?

为了在进入后台时空白MTKView,必须在从委托回调返回到UIApplicationDelegate对象上的applicationDidEnterBackground(_:)方法之前呈现一个空白帧。

仅仅监听UIApplication.didEnterBackgroundNotification是不够的;在通知观察者状态更改之前捕获快照。

这意味着您应该将应用程序已进入后台的消息从应用委托向下传递到相关的视图控制器,并强制它们立即呈现空白帧,然后再从委托方法返回(意味着没有发布通知,也没有向不同的线程异步调度(。下面是将MTKView清除为黑色并等待绘制和演示文稿

计划后返回的方法:
func drawBlankAndWait(_ mtkView: MTKView) {
mtkView.clearColor = MTLClearColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
let commandBuffer = commandQueue.makeCommandBuffer()!
guard let renderPassDescriptor = mtkView.currentRenderPassDescriptor else { return }
let renderEncoder = commandBuffer.makeRenderCommandEncoder(descriptor: renderPassDescriptor)!
renderEncoder.endEncoding()
let drawable = mtkView.currentDrawable!
commandBuffer.present(drawable)
commandBuffer.commit()
commandBuffer.waitUntilScheduled()
}

收到applicationWillEnterForeground(_:)呼叫后,您可以恢复进入后台时可能设置的任何状态,包括视图的暂停状态。

相关内容

  • 没有找到相关文章

最新更新