通过将元素映射到 Swift 中的结构来填充缓冲区

Filling a Buffer by Mapping the Elements to Structure in Swift

我试图通过将 UnsafeMutablePointer<Void> 映射到以下结构

来用 RGBA 值填充图像的像素缓冲区
struct Color {
    var red:CGFloat
    var green:CGFloat
    var blue:CGFloat
    var alpha:CGFloat
}

然后遍历像素

func fillImage (pixelData:UnsafeMutablePointer<Void>, numBytes:Int) {
    var pixels = UnsafeMutablePointer<Color>(pixelData)
    let numPixels = Int(numBytes / sizeof(Color))
    for i in 0...numPixels-1 {
        pixels[i] = Color(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
    }
}

我希望我的图像完全是红色的,但像素却是绿色的。将 1.0 移动到绿色或蓝色位置也不起作用。我能够使用 UnsafeMutablePointer<Float>(pixelData) 一次一个浮点数正确设置像素颜色,但显然使用 Color struct.

会更容易

在所有 64 位设备上(例如 iPhone 5s 及更高版本),CGFloat64 位 浮点数。如果你想创建 RGBA 数据 4 字节浮点值,则必须将 CGFloat 替换为 Float 在颜色结构中。