【发布时间】:2020-05-28 03:02:36
【问题描述】:
我在 Swift 中定义了一个 Uniforms 结构:
struct Uniforms {
var t = Float(0.0)
var arr = [0.2, 0.2, 0.2, 0.2, 0.2]
}
但是,我无法为其分配正确的MTLBuffer,因为MemoryLayout<Uniforms>.stride 返回16。这与 Swift 规范中关于 Array 是值类型的声明相矛盾。它实际上被MemoryLayout 视为引用类型。
长话短说,我如何将包含数组的 Uniforms 结构传递给着色器(我使用常量命名空间来传递它,一切都很好)。我是否需要通过单独的 [[buffer(n)]] 参数单独传递数组,我将从数组中复制内存?有更简单的选择吗?
【问题讨论】: