Вопросы по разработке OpenGL ES / iPhone - первая игра - PullRequest
1 голос
/ 01 ноября 2011

Я сейчас работаю над своей первой игрой для iPhone с openGLES - это потрясающе!Любить каждую минуту этого.Однако у меня есть пара вопросов:

  1. Я хотел бы создать систему частиц - какой самый быстрый способ сделать это?Я предположил бы, что я мог бы просто сделать изменяемый массив объектов частиц, однако каждая частица тогда должна была бы быть получена из NSObject, правильно?Кажется, что это идет с небольшим количеством накладных расходов. Есть ли лучший способ?В прошлом, с c ++, я использовал вектор чрезвычайно простых объектов частиц, менял мертвые частицы до конца и использовал их снова, когда мне нужна новая частица - я, вероятно, сделаю то же самое здесь.Просто беспокоюсь (возможно, несправедливо) по поводу эффективности.

  2. Как мне изменить систему координат OpenGL, чтобы позволить мне использовать 0-screenize в качестве единиц вместо значения по умолчанию от -1 до 1?(например, простой список вершин, использующий точки {-1,0,0, 1,0,0, 0,1,0}, может составить треугольник, в котором гипотенуза вытянута по всей центральной горизонтальной оси)

  3. Похоже, я вообще не могу использовать шейдеры с 1.1, но 2.0 использует их для всего есть ли какая-то причина для меня придерживаться 1.1?

  4. Есть ли веская причина для создания моего графического интерфейса полностью в OpenGL?Или мне будет хорошо использовать стандартную систему?(например, создание файла xib с элементами GUI)

  5. Поскольку я только начинаю, существуют ли какие-либо распространенные подводные камни, которые обычно сопровождают OpenGL ES?На самом деле я не хочу, чтобы это было открытым, я пытаюсь искоренить что-то конкретное, что может сбить с толку новых пользователей спецификации.

1 Ответ

2 голосов
/ 09 ноября 2011
  1. Я использую обычные структуры C для себя, в этом контексте NSObjects являются боровами, на 3G я могу получить 2000 частиц без проблем с структурами C, менее 200 с объектами.
  2. Примерно так получится система координат 480x320:

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    CGRect rect = self.view.bounds;
    if (highRes && (retina == 1)) {
        glOrthof(0.0, rect.size.width/2, 0.0 ,  rect.size.height/2, -1, 1000.0);
    } else {
        glOrthof(0.0, rect.size.width, 0.0 ,  rect.size.height, -1, 1000.0);    
    }
    
  3. Только для поддержки старых устройств <3GS. </li>
  4. Зависит от внешнего вида и работы, которую вы хотите.Если вам нужен ввод текста, помните, что вы должны делать это с нуля в openGL, а также для рендеринга шрифтов и т. Д. Иногда вы можете смешивать и то, и другое (скажем, открыть ящик с текстовыми полями и т. Д.), Но при смешивании того, что происходит в opengl, должно бытьочень просто.
  5. Множество подводных камней, лучше получите хороший учебник, чтобы у вас были основы, что-то, от настройки вашего взгляда до текстурирования модели, после чего вы можете обратиться к ней, если что-то пойдет

Удачи, сделайте игру веселой: -)

...