金属质感的原位处理

时间:2017-03-15 19:44:45

标签: ios macos metal

是否可以在没有MTLTexture的情况下就地处理osx_ReadWriteTextureTier2

似乎我可以将两个纹理参数设置为相同的纹理。这是受支持的行为吗?

具体来说,我不介意在写入后没有纹理缓存更新。我只想在原地(并且稀疏地)修改3d纹理。它的内存不允许有两个纹理。复制整个纹理的计算成本很高,特别是当我可能只更新它的一小部分时。

1 个答案:

答案 0 :(得分:2)

根据文档,无论功能可用性如何,在函数签名中声明两个单独的纹理参数(一次读取,一次写入),然后为两者设置相同的纹理都是无效的。

任何支持osx_GPUFamily1_v2的Mac都支持函数纹理读写(通过使用access::read_write声明纹理)。

"第1层和第34层之间的区别(没有显式常量)和osx_ReadWriteTextureTier2是后者支持读写纹理的其他像素格式。

如果您确定目标Mac不支持您需要的纹理读写类型(因为您需要部署到OS X 10.11,或者因为您使用了不兼容的像素格式您可以在一个平面上运行纹理,从3D纹理中读取,写入2D纹理,然后将结果重新渲染回3D纹理中的相应区域。它的工作量更大,但它的使用量远不及内存的两倍。