在MTLBuffer

时间:2015-04-22 14:09:44

标签: metal ios8.3

我想在我的着色器中将图像浮动数据存储在未格式化的内存位置,而MTLBuffer似乎就是答案。首先,这可能吗?我在MTLBuffer的apple文档中看到,可以访问指向缓冲区的指针。是否可以在着色器中使用该指针来填充分配的内存?其次,我希望了解这项行动的速度有多快;用Textures操作会快速有效吗?

我问这个问题,因为如果确认MTLBuffer的访问速度与使用MTLTexture的速度相当,我需要重新设计很多代码。

1 个答案:

答案 0 :(得分:1)

首先,了解几个restrictions

非常重要
  • 片段着色器既不支持写入纹理也不支持缓冲区。你只能选择渲染纹理。
  • 顶点着色器支持对缓冲区的支持写入,但不支持对纹理的写入。

因此,如果您使用这些着色器类型中的任何一种,则无论性能如何,您都无法在纹理写入和缓冲区写入之间进行选择。
如果您正在使用计算着色器并且您的写入模式相对简单(即1对1线程ID到像素对应),我希望缓冲区写入更快。也就是说,没有一个好的一般建议,所以最好的解决方案是尝试两者并进行简介。