В свободное время я люблю поиграть с разработкой игр для iPhone с OpenGL ES. Я собираю небольшую демонстрацию бокового скроллера 2D для забавы, и я относительно новичок в OpenGL, и я хотел получить более опытную информацию от разработчиков.
Итак, вот мой вопрос: имеет ли смысл указывать вершины каждого 2D-элемента в пространстве модели, а затем переводить каждый элемент в его окончательное пространство вида каждый раз, когда рисуется рамка?
Например, скажем, у меня есть набор блоков (квадратов), которые составляют основу моего бокового скроллера. Каждый квадрат определяется как:
const GLfloat squareVertices[] = {
-1.0, 1.0, -6.0, // Top left
-1.0, -1.0, -6.0, // Bottom left
1.0, -1.0, -6.0, // Bottom right
1.0, 1.0, -6.0 // Top right
}
Скажем, у меня есть 10 из этих квадратов, которые мне нужно собрать как основу для следующего кадра. Должен ли я сделать что-то подобное для каждого квадрата, видимого в текущей сцене?
glPushMatrix();
{
glTranslatef(currentSquareX, currentSquareY, 0.0);
glVertexPointer(3, GL_FLOAT, 0, squareVertices);
glEnableClientState(GL_VERTEX_ARRAY);
// Do the drawing
}
glPopMatrix();
Мне кажется, что выполнение этого для каждого 2D-элемента в сцене, для каждого кадра становится немного интенсивным, и я мог бы представить себе, что у более умных людей, использующих OpenGL гораздо больше, чем у меня, может быть лучший способ сделать это.
При всем этом, я ожидаю услышать, что я должен профилировать код и посмотреть, где могут быть какие-то узкие места: этим людям я говорю: я еще не написал ни одного этого кода, я просто в процессе оборачивания моего ума так, чтобы когда я пойду писать это, все прошло гладко.
Что касается профилирования и оптимизации, я действительно не пытаюсь здесь преждевременно оптимизировать, я просто пытаюсь сосредоточиться на том, как можно создать 2D-сцену и визуализировать ее. Как я уже сказал, я относительно новичок в OpenGL и просто пытаюсь понять, как все делается. Если у кого-нибудь есть какие-либо предложения относительно лучшего способа сделать это, я хотел бы услышать ваши мысли.
Пожалуйста, имейте в виду, что я не заинтересован в 3D, просто 2D пока что. Спасибо!