我需要将缓冲区传递给Metal fragment shader,它是N个浮点值的数组。但我希望着色器插入值,如果绘制的纹理的宽度大于N像素。如果我使用纹理,很容易使用采样器并设置线性滤波,但是不清楚是否可以在片段着色器中的任意缓冲区上设置插值。
答案 0 :(得分:1)
不,不可能为您在缓冲区中的值进行金属插值。 Metal无法知道缓冲区是否具有关联的“几何体”。例如,N个浮点值的数组可以是N个水平元素,N个垂直元素,5个N / 5个元素等等。插值需要知道哪个元素是给定元素的邻居,这需要几何知识。
当然,您可以在着色器中自行进行插值。
您还可以使用-newTextureWithDescriptor:...
的{{1}} / makeTexture()
方法从缓冲区创建纹理。然后你可以从那个纹理中采样。