Mac dev - помогите начать работу с 2d играми - PullRequest
1 голос
/ 18 ноября 2009

Я хочу сделать несколько простых 2d игр / клонов (для Mac), но у меня есть несколько вопросов:

  • Должен ли я использовать Кварц 2d или OpenGL (я не планирую пробовать 3d в ближайшее время)
  • Кажется, есть много таких вещей, как CGFloat / GLfloat, которые я должен использовать?
  • Должен ли я использовать Objective-C для игры тоже (классы) или просто C? (Я предполагаю, что я буду использовать Objective C и Какао для окна и представлений.)
  • Можно ли каждый раз перерисовывать весь вид? Я не совсем понимаю, как работает параметр -drawRect dirtyRect в NSView, как он узнает, что я хочу обновить?
  • Есть ли хорошие уроки для этого?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 18 ноября 2009

Quartz или Core Animation против OpenGL действительно зависят от того, что вы пытаетесь сделать. Если вы хотите простой рисунок и анимацию, используйте Quartz или CA. Если вы хотите быстрые / мощные игры, используйте OpenGL. В конце концов я бы предложил изучить оба.

Для вещей typedef'd используйте ту, которая предназначена для конкретной системы, которую вы используете. Для Quartz / CA / CG используйте CGFloat. Для OpenGL используйте GLfloat.

Objective-C против C также зависит от скорости, которую вы хотите. Objective-C добавляет немного накладных расходов, но (очевидно) позволит вам создавать гораздо более объектно-ориентированные игры. Я бы предложил использовать Objective-C, если вы используете Quartz и Core Animation, и Obj-C или C, если вы используете OpenGL. Однако, если вы делаете это на Mac (например, не для iPhone), вы, вероятно, не увидите большой разницы, если не будете выполнять сложное быстрое рисование.

Я не совсем уверен насчет drawRect, но этот вопрос содержит некоторую информацию, которая может ответить на этот вопрос для вас.

Для введения в Quartz я бы порекомендовал этот учебник , и я всегда слышал NeHe учебники , рекомендуемые для OpenGL.

1 голос
/ 18 ноября 2009

Если вы используете SDL с Cairo или OpenGL, вы получаете практически ту же модель программирования, но вы получаете кросс-платформенную совместимость практически бесплатно. Вы даже сможете продолжить использовать цель C для большей части игры, если хотите.

Как графически интенсивно вы хотите получить? Каиру, вероятно, будет проще начать работу с 2D.

...