OpenGL ES не отображает мой слой UILabel в качестве текстуры - PullRequest
0 голосов
/ 10 июня 2011

У меня есть эта небольшая проблема, и я думаю, что у меня есть из-за отсутствия моего опыта в разработке iOS.В любом случае, я пытаюсь отобразить некоторый предустановленный текст в виде слоя для моей плоскости (один квадрат).Я использую OpenGL ES 1.1, и я решил установить UILabel, а затем использовать его слой в качестве моей текстуры.Все должно быть хорошо, но у меня есть некоторые проблемы.Вот как я получаю слой:

- (void) convertTextToTexture:(NSString*)text toImage:(UIImage*)image {  

    UILabel *label = [[UILabel alloc] init];

    CGSize size = [text sizeWithFont:[UIFont boldSystemFontOfSize:12]];
    [label setBounds:CGRectMake(0, 0, size.width, size.height)];
    [label setFrame:CGRectMake(0, 0, size.width, size.height)];
    [label setFont:[UIFont boldSystemFontOfSize:12]];
    [label setLineBreakMode:UILineBreakModeWordWrap];
    [label setNumberOfLines:1];
    label.text = text;

    label.textColor =     [UIColor redColor];


    UIGraphicsBeginImageContext(label.frame.size); 
    [label.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    [label release]; 
}

и я называю его так:

UIImage *image = [[UIImage alloc] initWithData:someData];

[self convertTextToTexture:@"TEXT" toImage:image];

Результат: я всегда получаю someData.Если я просто alloc и init, я получаю белую текстуру.Я думаю, что это простая ошибка с использованием указателей и настройкой этой информации.Хотя в отладчике я заметил, что размер UILabel всегда равен 0x0.

Спасибо за вашу помощь и / или мнение.

1 Ответ

0 голосов
/ 11 июня 2011

Ваш image является локальной переменной в этом методе и выбрасывается после завершения метода. Я не уверен, что именно вы пытаетесь сделать, но похоже, что этот метод должен быть возвращающим :

- (UIImage *) convertTextToTexture:(NSString*)text {
     // ...
     return image;
}

И тогда вы бы назвали это так:

UIImage * imageOfText = [self convertTextToTexture:@"TEXT"];

и используйте imageOfText по желанию.

(Я говорю это без 100% ясного представления о том, что вы пытаетесь загрузить из данных в этом случае. Если вы генерируете изображение внутри метода, вам не нужно ничего загружать заранее.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...