При каждом вызове отрисовки OpenGL ES есть некоторые накладные расходы, поэтому, если бы вы представляли 10 объектов по отдельности, используя glDrawArrays()
или glDrawElements()
, это обычно было бы медленнее, чем один большой объект. Тем не менее, я думаю, вы обнаружите, что издержки от этих вызовов отрисовки являются лишь небольшим фактором при любых замедлениях рендеринга, которые вы можете испытать на устройствах iOS.
Если эти десять объектов являются статическими, довольно легко использовать индексированные треугольники, чтобы объединить их все в один массив, который рисуется за один вызов. Как указывает Вальдхайнц, в статье , которую я написал три года назад , содержится призыв использовать объекты буфера вершин (VBO) для сохранения геометрии в графическом процессоре и предотвращения дорогостоящих загрузок в каждом кадре. В то время, когда я это писал, это было не так важно, как новые графические процессоры iOS, обеспечивающие аппаратную поддержку VBO.
Другие факторы с большей вероятностью влияют на производительность, например, используют ли эти объекты прозрачность, сложность освещения на них и т. Д. В случае сомнений следуйте рекомендациям Apple " Рекомендации по работе с данными вершин ". , как указано в их Руководстве по программированию OpenGL ES для iOS, и профилируйте свое приложение, используя драйвер OpenGL ES и инструменты OpenGL ES Analyzer.