Я успешно использовал свой код в OSX 10.14 для генерации текстур металла:
let textureLoaderOptions = [MTKTextureLoader.Option.origin : MTKTextureLoader.Origin.bottomLeft, MTKTextureLoader.Option.textureStorageMode : MTLStorageMode.managed.rawValue] as [MTKTextureLoader.Option : Any]
do {
let _image = myNSImage.cgImage(forProposedRect: nil, context: nil, hints: nil)
let textureLoader = MTKTextureLoader(device: device)
texture = try textureLoader.newTexture(cgImage: _image, options: textureLoaderOptions)
} catch {
dump(error)
}
Примечание: дополнительная краткость и обработка ошибок для краткости опущены.
Теперь яобновив компьютер сборки до 10.15, я обнаружил следующую ошибку:
Error Domain=MTKTextureLoaderErrorDomain Code=0 "Image decoding failed" UserInfo={NSLocalizedDescription=Image decoding failed, MTKTextureLoaderErrorKey=Image decoding failed}
Я сейчас использую:
textureLoader.newTexture(URL: URL(fileURLWithPath: imageFilePath), options:textureLoaderOptions)
, но из-за другой логики, которая окружает оригиналкод, который я предпочел бы знать, если бы не было невероятно легкой вещи, которую я пропустил для нового OSX. Я предполагаю, что он определенно связан с OSX, поскольку абсолютно ничего другого - то есть версия Xcode или аппаратное обеспечение - не изменилось. Это сработало вчера, а теперь нет. Я даже отправил работающее приложение в App Store, и оно было отклонено из-за этого сбоя, когда они запустили его в OSX 10.15.
Я использую изображения png
и tiff
. Оба с одинаковой ошибкой и оба работали в OSX 10.14.