如何在 Metal 中传递每个原始数据?

How can I pass per primitive data in Metal?

在 Metal 中,您可以通过将数据添加到顶点数据并修改顶点描述符以包含它来传递每个顶点的数据。但是,如何传递数据 per primitive,而不是每个顶点?因此,如果我这样做 CommandEncoder.drawIndexedPrimitives(type: .triangle, indexCount: 6, indexType: .uint16, indexBuffer: indices, indexBufferOffset: 0),每个渲染的图元都将具有特定于该图元的数据,即。 e.三个连续的顶点是否相同?我实际上想做的是尝试渲染一个场景,其中包含多个纹理,但只使用一个绘制调用。我将纹理数组传递给片段着色器,它根据纹理 ID 进行采样。这些纹理 ID 应该是 per primitive。这可能吗?

制作一个单独的缓冲区,将其传递给 GPU,并按 vertex_id/3

对其进行索引