Позиционирование элементов в 2D пространстве с помощью OpenGL ES

В свободное время я люблю поиграть в разработку игр для iPhone с OpenGL ES. Я собираю небольшую демонстрацию двухмерной боковой скроллера для развлечения, и я относительно новичок в OpenGL, и я хотел получить более опытных разработчиков ». вход по этому.

Итак, вот мой вопрос: имеет ли смысл указывать вершины каждого 2D-элемента в пространстве модели, а затем переводить каждый элемент в пространство последнего видаeach time рамка нарисована?

Например, скажем, у меня есть набор блоков (квадратов), которые составляют основу моего бокового скроллера. Каждый квадрат определяется как:

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 на данный момент. Спасибо!

Ответы на вопрос(3)

Ваш ответ на вопрос