Вопрос о GL_VERTEX_ARRAY - PullRequest
       63

Вопрос о GL_VERTEX_ARRAY

3 голосов
/ 25 июня 2011

Это просто из интереса, но есть ли ограничение на количество вершин, которые GL_VERTEX_ARRAY будет «держать» и визуализировать через что-то вроде drawArrays ()? Или я могу теоретически пройти через несколько миллионов вершин и все еще иметь возможность вызывать drawArrays ()?

Ответы [ 2 ]

3 голосов
/ 25 июня 2011

Начиная с OpenGL-1.2 применяется своего рода ограничение при использовании glDrawRangeElements:

Реализации обозначают рекомендуемые максимальные объемы данных вершин и индексов, которые могут быть запрошены путем вызова GetIntegerv с символическимконстанты MAX_ELEMENTS_VERTICES и MAX_ELEMENTS_INDICES.Если end-start + 1 больше, чем значение MAX_ELEMENTS_VERTICES, или если число больше, чем значение MAX_ELEMENTS_INDICES, то вызов может работать с пониженной производительностью.Не требуется, чтобы все вершины в диапазоне начинались;конец ссылки.Однако реализация может частично обрабатывать неиспользуемые вершины, снижая производительность по сравнению с тем, что может быть достигнуто при оптимальном наборе индексов.

Но это скорее рекомендация, а не жесткое ограничение.Кроме этого, истинный предел - это объем установленной памяти, и то, что может быть адресовано выбранным типом для массива элемента индекса

Однако ограничения для glDrawRangeElements обычно также являются хорошим показателемдля размеров партии в целом.

3 голосов
/ 25 июня 2011

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

...