gpt4 book ai didi

ios - 无法使用类型为 'CGBitmapInfo' 的参数列表调用类型为 '(UInt32)' 的初始值设定项

转载 作者:行者123 更新时间:2023-11-28 21:31:57 25 4
gpt4 key购买 nike

我将图像作为纹理添加到 Metal 球体中。使用 swift 2.0,但出现 CGBitmapInfo(options) 错误,它说:无法使用类型为“(UInt32)”的参数列表调用类型为“CGBitmapInfo”的初始值设定项...任何人都知道如何解决它?这是我的代码:

func textureForImage(image:UIImage, device:MTLDevice) -> MTLTexture?
{
let imageRef = image.CGImage

let width = CGImageGetWidth(imageRef)
let height = CGImageGetHeight(imageRef)
let colorSpace = CGColorSpaceCreateDeviceRGB()

let rawData = calloc(height * width * 4, sizeof(UInt8))

let bytesPerPixel = 4
let bytesPerRow = bytesPerPixel * width
let bitsPerComponent = 8

let options = CGImageAlphaInfo.PremultipliedLast.rawValue | CGBitmapInfo.ByteOrder32Big.rawValue

let context = CGBitmapContextCreate(rawData,
width,
height,
bitsPerComponent,
bytesPerRow,
colorSpace,
CGBitmapInfo(options))


CGContextDrawImage(context, CGRectMake(0, 0, CGFloat(width), CGFloat(height)), imageRef)

let textureDescriptor = MTLTextureDescriptor.texture2DDescriptorWithPixelFormat(.RGBA8Unorm,
width: Int(width),
height: Int(height),
mipmapped: true)
let texture = device.newTextureWithDescriptor(textureDescriptor)

let region = MTLRegionMake2D(0, 0, Int(width), Int(height))

texture.replaceRegion(region,
mipmapLevel: 0,
slice: 0,
withBytes: rawData,
bytesPerRow: bytesPerRow,
bytesPerImage: bytesPerRow * height)

free(rawData)

return texture
}

最佳答案

在当前版本的 Swift 中,CGBitmapContextCreate 的最终参数是一个 UInt32,因此代替上面的 CGBitmapInfo(options),您应该只传递 options(分配给 options 的表达式被推断为类型 UInt32)。

关于ios - 无法使用类型为 'CGBitmapInfo' 的参数列表调用类型为 '(UInt32)' 的初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com