2016-08-14 46 views
2

我試圖資產圖像加載到金屬像這樣:優選的方法加載的紋理與金屬

let textureLoader = MTKTextureLoader(device: context.device) 
do{ 
    let image = UIImage(named: name) 
    try texture = textureLoader.newTextureWithCGImage(image!.CGImage!, options: [:]) 
}catch let error{ 
    print("Failed to create texture, error \(error)") 
} 

我能夠顯示圖像但顏色置換,如果該文件包含RGB作爲數據,但它被解釋爲BGR數據。我知道金屬層的默認顏色空間爲BGRA8Unorm,但我不知道如何強制以該格式加載圖像。

回答

0

您應該使用指定的類方法上MTKTextureLoader從一個URL創建一個新的MTLTexture

let device = MTLCreateSystemDefaultDevice()! 
let loader = MTKTextureLoader(device: device) 
let url = NSBundle.mainBundle().URLForResource("pic", withExtension: "jpg")! 
let texture = try! loader.newTextureWithContentsOfURL(url, options: nil) 
+0

其實,這是我想的第一件事,但我不能讓它找到像這樣。我得到錯誤'致命錯誤:意外地發現零,同時解開可選值。我的圖片位於'Assets.xcassets'中。如何正確指定該文件夾的路徑? – gloo

+0

當我打開url時觸發錯誤 – gloo

+0

目前沒有簡單的方法可以獲取資產目錄中資產的URL。如果您正在使用資產目錄,則應該使用其中一種[知道如何加載指定資產的方法](https://developer.apple.com/reference/metalkit/mtktextureloader/1645855-newtexture)。 – warrenm