如何正确地将 texture2d_array<float> 传递给片段着色器?

How do I properly pass a texture2d_array<float> to the fragment shader?

这是我的片段着色器。

constexpr sampler ColorSampler;
fragment half4 T(VertexOut Vertex [[stage_in]], texture2d_array<float> Texture [[texture(0)]]) {
    return half4(Vertex.Color, 1)*half4(Texture.sample(ColorSampler, Vertex.TexCoord.xy/Vertex.TexCoord.z, 0));
}

编译通过。但是,如何从该着色器接受的 Swift 端传递 texture2d_array<float>?我有一个名为 Textures 且类型为 [MTLTexture?] 的变量,但如何将其作为数组传递给纹理缓冲区 0?这行不通。

CommandEncoder.setFragmentTextures(Textures, range: 0..<Textures.count)

它不起作用,因为它将每个纹理放在其索引的纹理缓冲区中。如何正确地将纹理数组传递给片段函数?

我该怎么做?

我正在尝试的是个好主意吗?

如果几乎没有关于此的深入内容,我该如何研究?

setFragmentTextures 确实会单独绑定每个纹理。 如果你想在你的着色器中使用 texture2d_array 你必须创建一个 MTLTexture 与 MTLTextureType type2DArray.