是否可以在没有MTLTexture
的情况下就地处理osx_ReadWriteTextureTier2
?
似乎我可以将两个纹理参数设置为相同的纹理。这是受支持的行为吗?
具体来说,我不介意在写入后没有纹理缓存更新。我只想在原地(并且稀疏地)修改3d纹理。它的内存不允许有两个纹理。复制整个纹理的计算成本很高,特别是当我可能只更新它的一小部分时。
答案 0 :(得分:2)
根据文档,无论功能可用性如何,在函数签名中声明两个单独的纹理参数(一次读取,一次写入),然后为两者设置相同的纹理都是无效的。
任何支持osx_GPUFamily1_v2
的Mac都支持函数纹理读写(通过使用access::read_write
声明纹理)。
"第1层和第34层之间的区别(没有显式常量)和osx_ReadWriteTextureTier2
是后者支持读写纹理的其他像素格式。
如果您确定目标Mac不支持您需要的纹理读写类型(因为您需要部署到OS X 10.11,或者因为您使用了不兼容的像素格式您可以在一个平面上运行纹理,从3D纹理中读取,写入2D纹理,然后将结果重新渲染回3D纹理中的相应区域。它的工作量更大,但它的使用量远不及内存的两倍。