OpenGL для OpenGL-ES - glBegin (); - PullRequest
2 голосов
/ 05 мая 2009

Я пытаюсь научиться писать приложения OpenGL для iPhone. Как я могу портировать следующий код для работы с OpenGL-ES? Я знаю, что должен хранить вершины в массиве, а затем вызывать glDrawArrays (), но есть ли оптимальный способ сделать это? Моя мысль - создать очень большой массив и просто сохранить счетчик количества заполненных пробелов. Это там лучший подход? Как насчет использования NSArray и последующего преобразования обратно в массив c?

glBegin(GL_LINE_STRIP);

z = -50.0f;
for(angle = 0.0f; angle <= (2.0f*3.1415f)*3.0f; angle += 0.1f)
    {
    x = 50.0f*sin(angle);
    y = 50.0f*cos(angle);

    // Specify the point and move the Z value up a little   
    glVertex3f(x, y, z);
    z += 0.5f;
    }

// Done drawing points
glEnd();

Ответы [ 2 ]

1 голос
/ 06 мая 2009

Если у вас достаточно места и вы знаете максимальный размер массива, проще всего использовать один большой статически распределенный массив и просто отслеживать его текущий логический размер.

Если памяти мало, но ресурсов процессора много, упакуйте массив на лету, а затем зарегистрируйте массивы и вызовите glDrawArrays ().

Гибридный подход заключается в использовании динамически размещаемого массива, который можно обновлять (при необходимости). Вы можете сделать это вручную, перераспределяя динамический массив, когда он приближается к заполнению, или используя какой-либо NSMutableArray. (N.B. NSArray для статических массивов; NSMutableArrays (подкласс) являются динамическими. См. Здесь. )

Надеюсь, это помогло:)

1 голос
/ 05 мая 2009

Звучит как классический компромисс между скоростью и памятью. Если памяти очень мало, попробуйте использовать динамическую структуру данных. Если у вас есть разумная граница для размера массива, и из этого уравнения вы точно знаете, сколько вершин вам нужно, тогда просто используйте простой старый статический массив с счетчиком, как вы предложили.

Похоже, вы знаете о массивах и рисуете массивы, поэтому я не буду вдаваться в подробности.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...