由于纹理使用问题,Apple的延迟渲染示例无法在Metal 2上运行

我目前正在尝试找出如何以并行友好的方式执行以下过程。它可以归结为以下步骤:

  1. 画一个三角形到一个小纹理
  2. 在框架上绘制较小的纹理,以允许线性采样“模糊”三角形。

如果可以,那么我应该可以渲染场景。问题是纹理不能同时具有读取和写入访问权限。我不确定是否一直都是这种情况,还是只是在Metal中。

因此,我转到了苹果公司的延迟渲染示例,知道延迟渲染通过写入多个纹理并一起读取这些相同的纹理以在可绘制的屏幕上生成最终图像而起作用。但是,如果运行它,我会遇到与当前渲染代码相同的错误,其中colorAttachment[0] does not have usage that specifies _

我假设这是由于Metal或iOS的更改造成的。

值得注意的是,当它连接到XCode时,它立即崩溃,但是如果从主屏幕打开,它可以在冻结之前自行运行几秒钟。

如何对读写访问使用纹理?为什么示例代码不起作用?

华伦

该示例代码无法正常工作,因为Apple选择不进行更新就进行重大更改。它发生了。

这是您可以运行示例的最小更改集:

AAPLRenderer.mm第204行,添加:

shadowTextureDesc.usage = MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead;

AAPLView.mm第130行,添加:

desc.usage = MTLTextureUsageRenderTarget;

在153和178行上重复上述操作。

对于您的用例,您想MTLTextureUsageRenderTarget | MTLTextureUsageShaderRead在屏幕外渲染目标上使用。这样一来,您就可以对其进行渲染,并在随后的过程中对其进行采样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章