как многопоточность используется в играх (iOS) - PullRequest
1 голос
/ 17 декабря 2011

Я делаю игру, которая основана на том, что NSTimer вызывает основной цикл со скоростью 40 кадров в секунду, и когда я запускаю его, даже на новейшем iPod touch, он все еще заметно отстает.Можно ли использовать многопоточность, чтобы уменьшить задержку без уменьшения частоты кадров, или многопоточность только для обеспечения гибкости пользовательского интерфейса при выполнении сложных вычислений?И если это можно использовать, не могли бы вы указать мне учебник о том, как это будет реализовано?

Ответы [ 2 ]

5 голосов
/ 17 декабря 2011

Как правило, рекомендуется перемещать трудоемкие операции из основного потока.Основной поток обрабатывает пользовательский интерфейс вашего приложения, и если вы заблокируете его, вы не сможете обновлять стандартные элементы пользовательского интерфейса и регистрировать события касания.В зависимости от того, сколько обработки выполняется за кулисами для вашей игры (физика, искусственный интеллект и т. Д.), Вам может понадобиться переместить значительные куски этого в фоновый поток.

Многопоточность - это не простая тема,но Apple сделала это намного проще благодаря Grand Central Dispatch, поэтому я настоятельно рекомендую прочитать их Руководство по программированию параллелизма , которое описывает этот и другие методы для достижения многопоточности в вашем приложении

У Apple есть целоераздел под названием « Параллельность и OpenGL ES » в их Руководстве по программированию OpenGL ES для iOS.При этом они описывают несколько сценариев повышения производительности приложения OpenGL ES с использованием многопоточности.

0 голосов
/ 17 декабря 2011

пожалуйста, не делайте игру, которая требует высокого FPS с UIKIT.если это 2D-игра, вам нужно выбрать либо Quartz, либо COCOS2D (который основан на OpenGL), а если это 3D, то, как предложил @Ajeet, вы должны использовать OpenGL или искать 3D-движки, доступные для iOS для высокого FPS.

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