iPhone: Создание игр для iOS (iPhone и iPad)
GameDev.ru / Сообщества / iPhone / Форум / renderInContext только CATransform3D

renderInContext только CATransform3D

Advanced: Тема повышенной сложности или важная.
kZUraXПостоялецwww2 апр. 201220:34#0
Раньше, чтоб сохранить содержимое UIImageView, я пользовался функцией типа:
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];

она записывала все свои слои с примененными(которые были CGAffineTransform) преобразованиями и небыло никаких проблем.
Но когда я перешел на более сложные трансформации и начал работать со структурой UIView.layer.transform (это CATransform3D ), неожиданно столкнулся с огромной проблемой.

Весь renderInContext: и похожие на него полностью игнорируют преобразования CATransform3D. Все найденные ресурсы, и даже документация, посылают на х.. недавно разрешенный метод private API UIGetScreenImage(), которая тупо делает скриншот экрана. И к тому же работает медленно...

Может кто-нить знает возможность как все-таки по-хорошему решить эту проблему(Все таки отрендить с учетом CATransform3D)?
Мне нужно сохранить картинку и ее sublayers в Галлерею ( т.е. в UIImage* ).


Если таки нельзя сделать по-хорошему, то я вижу 2 возможных решения:
1. UIGetScreenImage() - но она делает скрин прямо в текущий момент(в моей функции нажатия кнопки), я не успеваю спрятать все GUI элементы (а точнее оно не успевает перерисовать экран со спрятанными элементами).

2. Отрендить OpenGLES все слои руками, и перевести контекст в UIImage - но я не могу найти (и не очень уверен в возможности) примера, где создался бы GL Render на 2 секунды, отрендился (и я не сильно понимаю куда бы лучше все это рендить, я работал только с экраном), и не знаю как сохранить результат мне.

Буду благодарен за любую помощь. Спасибо.

digПостоялецwww2 апр. 201221:05#1
Сам столкнулся с похожей проблемой, когда в сделанном на коленке движке с использованием CATransform3D аффинных преобразований нельзя было отрендерить кадр в бэкбуфер сохранив эти самые преобразования. После долгих поисков пришел к выводу, что раз в официальной библиотеке нет поддержки такого вот, то и пытаться изобретать велосипед не стоит.
Конкретных решений не подскажу, просто увидел похожую на свою проблему и решил поделиться отрицательным опытом :)
p.s. В долгосрочной перспективе освоение OpenGLES это большой плюс по сравнению с поиском быстрого решения. Пусть займет больше времени, но пригодится потом неоднократно.
p.p.s  Мануалы вроде бы не посылают - там где-то было черным по белому написано, что в данный момент аффинные преобразования игнорируются.
kZUraXПостоялецwww3 апр. 201212:07#2
dig
спасибо, чужой опыт мне был интересен

/ Форум / iPhone: Создание игр / Программирование

Тема в архиве.

2001—2018 © GameDev.ru — Разработка игр