【问题标题】:How to retrieve the current current texture used by an MTKView/UIView/NSView如何检索 MTKView/UIView/NSView 使用的当前纹理
【发布时间】:2020-03-26 10:07:18
【问题描述】:

我想复制 MTKView(或 UIView 或 NSView)的屏幕。如何检索实际用于绘制此 MTKView 内容的当前可绘制对象(或纹理)?如果我使用 currentDrawable,那么我检索到的纹理不是实际的(已经太旧了)

【问题讨论】:

  • 渲染前还是渲染后需要纹理?
  • @0xBFE1A8 : 渲染后 :)

标签: ios objective-c macos metal metalkit


【解决方案1】:

您可以注册一个完成处理程序:

[commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> cb) 
{
    id<MTLTexture> texture = view.currentDrawable.texture;
    /* ... */
}];

为了获得更好的性能,请尽快发布可绘制对象。

【讨论】:

  • 我可以将纹理保留多久?我的意思是纹理不是可绘制的
  • 不,你应该尽快释放一个drawable(纹理)。
  • 如果你想保存纹理使用MTLBlitCommandEncoder复制到另一个纹理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 2018-12-07
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多