Вопрос о 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 обычно также дают хорошее представление о размерах партии в целом.

Определенно есть предел, но, насколько я знаю, он основан только на доступной памяти, поэтому вы можете иметь несколько миллионов вершин.

Другие вопросы по тегам