【发布时间】:2019-01-23 00:37:37
【问题描述】:
我正在尝试使用 CGDisplayStreamCreate 来捕获显示并在金属着色器中使用纹理。
代码一直有效地从 CGDisplayStreamCreate 获取样本,但我找不到在 Metal 着色器中使用这些样本的方法。
一旦我收到来自 CGDisplayStreamCreate 回调的样本,我会使用 CVPixelBufferCreateWithBytes() 创建一个 CVPixelBuffer,然后调用 CVMetalTextureCacheCreateTextureFromImage() 以从中获取金属纹理。
对 CVMetalTextureCacheCreateTextureFromImage 的调用失败并显示 -6660。
CGDisplayStream api创建的IOSurface似乎与metal不兼容,仅与openGL兼容。
我曾尝试将 kCVPixelBufferMetalCompatibilityKey 属性传递给不同的函数调用,但无济于事。
有没有办法将金属与 CGDisplayStreamCreate 中的缓冲区一起使用?
【问题讨论】:
标签: macos metal screen-capture