#iphone #objective-c #opengl-es
#iPhone #objective-c #opengl-es
Вопрос:
Мне было поручено создать сферу, которую можно поворачивать касанием (или анимировать) вдоль одной оси, как обычный земной шар. Я также должен уметь рисовать анимированные линии на этой сфере (например, нарисовать линию между Сиднеем и Нью-Йорком). Обычно я делаю все свои анимации в 2D, обычно используя основную анимацию, поскольку у меня никогда не было необходимости делать что-либо еще. У меня такое чувство, что проблема такого рода требует, чтобы я перешел на OpenGL.
Мой вопрос в том, возможно ли достичь этого с помощью core animation (время имеет существенное значение), или мне действительно нужно быстро изучить OpenGL. Если да, то достаточно ли просто решить эту проблему? Я довольно хороший программист, но у меня нет опыта работы с OpenGL. Сможет ли способный программист сделать это, скажем, за 2 недели?
В качестве дополнительного вопроса, предположим, я использую OpenGL, если мне затем нужно будет выполнять другие действия в проекте (например, показывать разные экраны или показывать экраны поверх сферы), могу ли я использовать UIKit или весь проект должен быть на OpenGL?
Ответ №1:
- Основная анимация предназначена для анимации видов и в основном представляет собой слой 2D-анимации, поэтому она не подходит для 3D-вращающейся сферы.
- Нарисовать текстурированную сферу довольно просто, смотрите этот пример
- Смешивание GL и обычного UIView не является проблемой. Вы можете накладывать обычные элементы управления на вид GL.
Комментарии:
1. Я понимаю, что основная анимация выполняется только в 2D формате, но я подумал, что было бы возможно исказить 2D-слой, чтобы придать ему вид сферы. Это, вероятно, немного выше моего понимания лично, но все же кажется, что это должно быть выполнимо? Также спасибо за ссылку — она выглядит удобной.
2. вы не так уж много можете сделать, выполняя 2D-преобразования. я бы посоветовал вам ознакомиться с OpenGL, там есть масса приятных примеров того, как нарисовать текстурированную сферу. новые руководства Google для получения дополнительной информации