Вопрос о GL_VERTEX_ARRAY
Это просто из интереса, но есть ли ограничение на количество вершин, которые GL_VERTEX_ARRAY будет "держать" и визуализировать через что-то вроде drawArrays()? Или я мог бы теоретически пройти через несколько миллионов вершин и все еще иметь возможность вызывать drawArrays()?
2 ответа
Начиная с OpenGL-1.2, при использовании применяются ограничения glDrawRangeElements
:
Реализации обозначают рекомендуемые максимальные объемы данных вершин и индексов, которые могут быть запрошены путем вызова
GetIntegerv
с символическими константамиMAX_ELEMENTS_VERTICES
а такжеMAX_ELEMENTS_INDICES
, Если end-start+1 больше значенияMAX_ELEMENTS_VERTICES
или если число больше, чем значениеMAX_ELEMENTS_INDICES
то вызов может работать с пониженной производительностью. Не требуется, чтобы все вершины в диапазоне начинались; конец ссылки. Однако реализация может частично обрабатывать неиспользуемые вершины, снижая производительность по сравнению с тем, что может быть достигнуто с помощью оптимального набора индексов.
Но это скорее рекомендация, это жесткое ограничение. Кроме этого, истинный предел - это объем установленной памяти, и что может быть решено выбранным типом для массива элемента индекса.
Однако пределы для glDrawRangeElements
обычно также дают хорошее представление о размерах партии в целом.
Определенно есть предел, но, насколько я знаю, он основан только на доступной памяти, поэтому вы можете иметь несколько миллионов вершин.