我想将一个 float 传递给我的 Metal 着色器。我想不通。
这是我的着色器:
vertex float4 model_vertex(unsigned int iid[[instance_id]]
constant float angle) {
float number = float(iid) / 64.0;
return float4(number * sin(angle), number * cos(angle), 0.0, 1.0);
}
现在我想把它传递给着色器:
let renderPassDescriptor = MTLRenderPassDescriptor()
let renderEncoder = commandBuffer.renderCommandEncoderWithDescriptor(renderPassDescriptor)
// ...
let angle: Float = 0.5
renderEncoder.setUniform1(angle) // What do I do here?
如何传递单个浮点值?
最佳答案
同样在 10.11+ 和 iOS 9+ 中你可以使用:
public func setVertexBytes(bytes: UnsafePointer<Void>, length: Int, atIndex index: Int)
如果您只使用缓冲区一次(并且您的数据小于 4K 长),这比创建 MTLBuffer 更好。
关于ios - 如何使用 Swift 将 Float uniform 传递给 iOS Metal 着色器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26298840/