Ios 无法调用类型为';CGBitmapInfo';具有类型为';(UInt32)和#x27;
我正在将图像作为纹理添加到金属球体中。使用swift 2.0,但我得到了一个错误CGBitmapInfo(选项),它说:无法使用类型为“(UInt32)”的参数列表调用类型为“CGBitmapInfo”的初始值设定项…有人知道如何修复它吗?这是我的密码:Ios 无法调用类型为';CGBitmapInfo';具有类型为';(UInt32)和#x27;,ios,swift2,metal,Ios,Swift2,Metal,我正在将图像作为纹理添加到金属球体中。使用swift 2.0,但我得到了一个错误CGBitmapInfo(选项),它说:无法使用类型为“(UInt32)”的参数列表调用类型为“CGBitmapInfo”的初始值设定项…有人知道如何修复它吗?这是我的密码: func textureForImage(image:UIImage, device:MTLDevice) -> MTLTexture? { let imageRef = image.CGImage let width
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
).在当前版本的Swift中,cBitMapContextCreate
的最后一个参数是UInt32
,因此代替上面的cBitMapInfo(options)
,您只需传递options
(分配给options
的表达式被推断为具有类型UInt32
).检查这个-检查这个-谢谢!我很高兴它受到好评。谢谢!我很高兴它受到了好评。