【发布时间】:2017-06-10 18:40:07
【问题描述】:
我有一个正在传递数据的块,我想将它转换为浮点数组的数组——例如[[0.1,0.2,0.3, 1.0], [0.3, 0.4, 0.5, 1.0], [0.5, 0.6, 0.7, 1.0]]。此数据以data:UnsafeMutablePointer<UnsafeMutableRawPointer> 的形式传递给我(内部数组为RGBA 值)
fwiw -- 区块参数来自SCNParticleEventBlock
如何将数据取消引用到 [[Float]] 中?一旦我有了包含内部数组的数组,我就可以使用以下方法引用内部数组 (colorArray) 数据:
let rgba: UnsafeMutablePointer<Float> = UnsafeMutablePointer(mutating: colorArray)
let count = 4
for i in 0..<count {
print((rgba+i).pointee)
}
fwiw -- 这是 Apple 用于引用数据的示例 Objective-C 代码 (from SCNParticleSystem handle(_:forProperties:handler:))
[system handleEvent:SCNParticleEventBirth
forProperties:@[SCNParticlePropertyColor]
withBlock:^(void **data, size_t *dataStride, uint32_t *indices , NSInteger count) {
for (NSInteger i = 0; i < count; ++i) {
float *color = (float *)((char *)data[0] + dataStride[0] * i);
if (rand() & 0x1) { // Switch the green and red color components.
color[0] = color[1];
color[1] = 0;
}
}
}];
【问题讨论】:
标签: arrays swift3 unsafemutablepointer