【发布时间】:2019-01-27 22:58:09
【问题描述】:
我想调试我的金属着色器,但“捕获 GPU 帧”按钮在调试菜单中不可见且不可用。
我的方案最初是这样设置的:
- 捕获 GPU 帧:自动启用
- Metal API 验证:已启用
当我将 Capture GPU Frame 选项更改为 Metal 时,我确实看到了捕获按钮,但当我尝试制作渲染命令编码器时,我的应用程序崩溃了:
commandBuffer.makeRenderCommandEncoder(descriptor: ...)
validateRenderPassDescriptor:644: 断言失败 `Texture at colorAttachment[0] has usage (0x01) which doesn't specify MTLTextureUsageRenderTarget (0x04)'
问题一:为什么要指定用途? (它在自动启用模式下工作)
问题二:如何指定MTLTextureUsageRenderTarget?
运行测试版; Xcode 10 和 iOS 12。
【问题讨论】:
-
您只是在
MTKView的可绘制对象中绘制一个通道吗?如果是这样,请尝试将视图的framebufferOnly属性设置为false。这应该在启用捕获时自动发生,但听起来您可能遇到了错误。 -
Short awnser,是的,虽然我已经设置了一个允许后台渲染的流程。谢谢,我试试看。