-(id<MTLTexture>)textureWithName:(NSString*)imgname UsingDevice:(id<MTLDevice>)device {
MTKTextureLoader* textureLoader = [[MTKTextureLoader alloc] initWithDevice:device];
NSDictionary *textureLoaderOptions = @{
MTKTextureLoaderOptionTextureUsage : @(MTLTextureUsageShaderRead),
MTKTextureLoaderOptionTextureStorageMode : @(MTLStorageModePrivate)
};
return [textureLoader newTextureWithName:imgname
scaleFactor:1.0
bundle:nil
options:textureLoaderOptions
error:nil];
}
и в ваших металлических конфигурациях
id<MTLTexture> mtltexture01;
mtltexture01 = [self textureWithName:@"texture02" UsingDevice:device];
Имейте в виду, что texture02
- это имя файла, и файл должен быть доступен в активах ваших приложений. Вы можете сохранить изображение как MTLTexture в свой актив в Xcode, и поэтому преобразование будет выполнено во время сборки.
Также проверьте, содержит ли изображение хотя бы правильную непрозрачность и является ли оно одним из форматов PNG, JPEG или TIFF. Известная проблема с загрузчиком, когда текстуры содержат только серый / черный цвета и используется 0% прозрачности. введите описание изображения здесь