Постоянный цвет OpenGL - PullRequest
       20

Постоянный цвет OpenGL

0 голосов
/ 28 сентября 2011

Я прочитал эту документацию Apple (под заголовком «Избегайте хранения констант в массивах атрибутов»), говорится, что если все вершины модели имеют одинаковый цвет, то цвет не должен быть атрибутом вершины. Что они подразумевают под «приложениями OpenGL ES 2.0 можно установить постоянный атрибут вершины…»?

У меня вопрос: лучше ли использовать единообразное значение для цвета, а для call использовать одинаковый вызов и вызов draw для каждого объекта? Или в любом случае иметь атрибут вершины, но нарисовать все одним махом. (Или постоянный атрибут вершины, если так лучше).

В принципе, является ли преимуществом одновременной отрисовки всего лишь отсутствие издержек при многократных вызовах функций?

Просто чтобы понять это, скажем, я рисовал 1000 кругов в каждом кадре, каждый разного цвета и с 40 вершинами. Что было бы лучше в этом случае?

1 Ответ

3 голосов
/ 28 сентября 2011

Ответ зависит от того, сколько материала вы рисуете за один розыгрыш.Если у вас есть объект из 30000 вершин, где все они имеют одинаковый цвет, то вы тратите много времени на чтение каждой вершины (при условии, что данные цвета делают ваши данные на вершину больше. Возможно, нет).Однако, если вы говорите о рендеринге с четырьмя, когда каждый квад имеет свой цвет, то унифицированные накладные расходы на обновление и несколько вызовов отрисовки приведут к снижению производительности.

Обратите внимание, что в OpenGL есть методы для создания экземпляров., который позволяет вам иметь данные для каждого экземпляра, а также данные для каждой вершины.Но это, как правило, ничего не стоит, пока у вас не будет нескольких тысяч экземпляров и более 100 вершин в модели.

Для вашего конкретного примера нет способа узнать, что будет быстрее.Вы должны были бы сравнить это.

...