Рисование векторной графики на iphone - PullRequest
1 голос
/ 05 октября 2009

Пожалуйста, прости вопрос новичка. У меня есть игра для iPhone, которая в настоящее время использует множество изображений PNG для анимации. Хотя это работает хорошо, изображения занимают много памяти. У меня есть изображения в векторном формате, и я бы предпочел использовать их вместо PNG.

Есть ли родной способ сделать это?

Ответы [ 3 ]

5 голосов
/ 11 декабря 2010

Полагаю, вы хотите использовать Core Animation, верно? В этом случае ваши возможности довольно ограничены. Есть несколько классов слоев, которые отображают графику: CALayer рисует растровое изображение, CAShapeLayer рисует путь Безье, CAGradientLayer рисует линейный градиент, CATextLayer рисует текст. Вы также можете использовать OpenGL с CAEAGLLayer, но он не очень хорошо сочетается с другой графикой Quartz с точки зрения производительности. Скорее всего, вам все равно придется использовать PNG, потому что даже если у вас есть PDF-файлы, которые вы можете отображать с помощью Core Graphics, они должны быть растеризованы, прежде чем вы сможете показать их в CALayer. Более того, растеризация будет выполняться на процессоре, чего не должно происходить с каждым кадром анимации.

Что касается использования памяти, я чувствую вашу боль. Много изображений == много памяти. Core Animation не совсем игровой движок, он разработан с учетом анимации пользовательского интерфейса. Однажды я делал игру для iPhone с CA, и помимо использования памяти были проблемы с производительностью, когда одновременно происходило слишком много анимаций. Взгляните на Cocos2D, он намного лучше подходит для игр и активно развивается. Конечно, у него есть свои проблемы, заслуживающие упоминания в качестве опции.

0 голосов
/ 06 ноября 2010

Вы можете найти больше информации в паре проектов GitHub, которые подпадают под Objective-C и SVG.

https://github.com/search?type=Everything&language=objective-c&q=SVG

0 голосов
/ 05 октября 2009

Дублирование

EDIT:

Прочитали ли вы Руководство по программированию Quartz2D ? Под «векторными изображениями» я не уверен, какой формат вы имеете в виду. Я полагаю, вы имеете в виду SVG. Если вы действительно не можете использовать UIWebView для этого, тогда Quartz2D, вероятно, является способом, которым я бы сделал пользовательский рендеринг.

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