Работая с другим сообщением здесь в качестве отправной точки, я пытаюсь сделать что-то подобное. Получив текстуру .jpg
из этого поста, мой код отлично работает на реальном устройстве, но не работает в симуляторе. Причина, по-видимому, связана с форматом изображения.
Как упоминалось в документации Apple здесь , вы не можете использовать формат MTLPixelFormat.r8Unorm_srgb
, который, как я полагаю, кодирует эту текстуру, на основе следующей ошибки:
failed assertion `pixelFormat (11) is not a valid MTLPixelFormat.'
Пытаюсь выяснить, как изменить формат, но не знаю, как go об этом. Я не знаю, можно ли его загрузить в конкретное цветовое пространство во время создания, или мне нужно сделать что-то конкретное c в Photoshop, возможно, даже полностью изменить тип файла, но даже там я не вижу как отключить цветовые профили, просто измените их на что-нибудь другое.
Так есть ли у кого-нибудь информация о том, как можно создать / загрузить текстуру, которая также совместима с симулятором?
Обновить
Кто-то спрашивает, вот как я настраиваю текстуру.
let noiseImage = UIImage(resourceName: "Noise", extension: "jpg")!
myMaterial.setValue(SCNMaterialProperty(contents: noiseImage), forKey: "noiseTexture")
Вот инициализатор удобства, который используется выше ...
extension UIImage {
convenience init?(resourceName:String, extension:String? = nil, bundle:Bundle? = nil) {
let bundle = bundle ?? Bundle.main
guard let resourceFileName = bundle.path(forResource: resourceName, ofType: `extension`) else {
return nil
}
self.init(contentsOfFile: resourceFileName)
}
}