Как использовать GLKTextureLoader для загрузки кубической карты из веб-адреса

Не знаете, как использовать изображение, загруженное из Интернета, в качестве ресурса в скайбоксе GLKit (например, старое представление улиц apple/google maps). Есть 2 способа загрузки кубических карт с помощью GLKTextureLoader: cubeMapWithContentsOfFile и cubeMapWithContentsOfUrl.

Если я получаю изображение локально, оно работает нормально:

NSString *path = [[NSBundle mainBundle] pathForResource:@"pano" ofType:@"jpg"];
GLKTextureInfo *skyboxCubemap =  [GLKTextureLoader cubeMapWithContentsOfFile:imgPath options:options error:&error];

Так есть ли способ получить путь от изображения, загруженного из Интернета, и использовать его здесь?

1 ответ

Решение

Я закончил тем, что загрузил изображение из сети так:

- (void) cacheImage: (NSURL *) ImageURL : (NSString *)imageName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dir = [paths objectAtIndex: 0];
    NSString *file = [docDir stringByAppendingPathComponent: imageName];

    if(![[NSFileManager defaultManager] fileExistsAtPath: file])
    {
        NSData *data = [[NSData alloc] initWithContentsOfURL: ImageURL];
        UIImage *image = [[UIImage alloc] initWithData: data];
        [UIImageJPEGRepresentation(image, 100) writeToFile: docFile atomically: YES];
    }
}

кэширование и возврат файла URL через:

- (NSString *) getCachedImage : (NSString *)imageName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains
    (NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString* cachedPath = [documentsDirectory stringByAppendingPathComponent:imageName];
    NSString *path;
    if([[NSFileManager defaultManager] fileExistsAtPath: cachedPath])
    {
        path = cachedPath;
    }
    return path;
}

и загрузка файла через

NSString *cached = [self getCachedImage:@"cacheKey"];
self.skyboxCubemap =  [GLKTextureLoader cubeMapWithContentsOfFile:cached options:options error:&error];
Другие вопросы по тегам