Принятый ответ несколько устарел. После ссылки на документ в ответе Йорна Хорстманна, Руководство по программированию OpenGL ES для iOS , Apple описывает , как использовать трюк "вырожденные треугольники" с DrawElements , таким образом получая лучшее из обоих миров.
Незначительная экономия нескольких индексов при использовании DrawArrays не стоит той экономии, которую вы получаете, объединяя все свои данные в один вызов GL, DrawElements. (Вы можете объединить все, используя DrawArrays, но тогда любые «потраченные впустую элементы» будут тратить впустую вершины, которые намного больше, чем индексы, и также требуют больше времени рендеринга.)
Это также означает, что вам не нужно тщательно рассматривать все ваши модели, чтобы выяснить, можно ли воспроизвести большинство из них как минимальное количество полос, или они слишком сложны. Одно единое решение, которое обрабатывает все. (Но постарайтесь, по возможности, упорядочить по полосам, чтобы свести к минимуму отправленные данные и максимально повысить вероятность повторного использования вычислений вершин в недавно кэшированных графических процессорах.)
BEST: один вызов DrawElements с GL_TRIANGLE_STRIP, содержащий все ваши данные (которые меняются в каждом кадре).