Mac Dev - как обновить вид для 2-й игры?

Если вы увидите мой другой вопрос, значит, я начинаю пробовать создавать простые 2D-игры на Mac. Там я решал, какую библиотеку использовать (OpenGL или Quartz), но независимо от того, что мне придется использовать какао, чтобы сделать его хорошим Mac-приложением, а также для окна и представления (с OpenGL, NSOpenGLView). Очевидно, что для игры вид придется перерисовывать много раз в секунду. Чтобы перерисовать представление, вам нужно сделать [view setNeedsDisplay:YES];, но я читал, что вам не следует делать это много раз (потому что это стоит очень дорого). Но как мне перерисовать вид, например. при разумном fps для 2d игры? Спасибо.


person mk12    schedule 18.11.2009    source источник


Ответы (1)


Правило «перерисовывать только в случае необходимости» не применимо к играм. Игры обычно пытаются перерисовать с частотой обновления монитора или максимально приближенной к этой частоте.

На этой странице описывается, как сделать цикл рендеринга OpenGL в какао: http://developer.apple.com/mac/library/qa/qa2004/qa1385.html

person Tom Dalling    schedule 18.11.2009
comment
Apple сказала, что вы не должны писать цикл как можно быстрее. Вам следует ограничить свой рисунок чем-то разумным, например 60 Гц; в противном случае вы потратите время процессора, не делая ничего полезного. Если вы используете vsync'd, это должно произойти автоматически. Если нет, пожалуйста, поставьте там ограничитель скорости. Пользователи вашего ноутбука будут вам благодарны. - person Daniel Yankowsky; 19.11.2009
comment
Я просто предположил, что читатель будет знать, что vsync максимально быстро ограничивает возможное. Я должен был быть более ясным. - person Tom Dalling; 19.11.2009