Максимальный размер для объектов вершинного буфера (OpenGL ES 2.0) - PullRequest
10 голосов
/ 10 сентября 2011

Существует ли максимальный размер для объектов буфера вершин, связанных с GL_ARRAY_BUFFER или GL_ELEMENT_ARRAY_BUFFER ???

Первоначально я рисовал сетку, состоящую из 16 подсетей. Для каждой подшивки я создавал буфер вершин и на этапе рендеринга я вызывал glDrawElements. Это работало нормально на симуляторе iOS, но когда я пытался выполнить рендеринг на свое устройство, экран постоянно мигает, а сетки не отображаются.

Затем я немного почитал и обнаружил, что вам не следует слишком часто вызывать glDrawElements на этапе рендеринга. Я попытался объединить все мои подмешивания в один буфер вершин. Буфер, связанный с GL_ARRAY_BUFFER, содержит 3969 вершин, где каждая вершина содержит 20 чисел с плавающей запятой. Таким образом, размер этого буфера составляет 317520 байт. Индексы, привязанные к GL_ELEMENT_ARRAY_BUFFER, составляют 16425 шортов. Следовательно, размер этого буфера составляет 32850 байт.

В вики OpenGL говорится, что «от 1 МБ до 4 МБ - хороший размер в соответствии с одним документом nVidia» для объекта буфера вершин.

Я распечатал результат glGetError после привязки каждого объекта буфера и вызова glDrawElements, и я не вижу никаких ошибок. Тем не менее, мои сетки отображаются неправильно. Кажется, что правильно рисуется только первая сетка. Есть ли что-то подозрительное в том, как я это реализовал? Я не хотел задавать этот вопрос слишком долго, поэтому, если вам понадобится дополнительная информация, дайте мне знать. Если в теории нет ничего неправильного, возможно, я просто допустил ошибку при реализации.

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

Существует максимальный размер, в том смысле, что графический процессор всегда может выдавать ошибку GL_OUT_OF_MEMORY.Но кроме этого, нет.

2 голосов
/ 29 сентября 2011

См. Это:

http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es

Существуют некоторые естественные ограничения для меньших типов данных, например, ~ 65000 для использования шорт в качестве индексов.

Но что более важнов ссылке есть дополнительная справка, которая является очень хорошим учебником и включает в себя некоторые неподтвержденные доказательства, которые сокращают работу до естественного функционального предела.

0 голосов
/ 10 января 2016

Я знаю, что уже слишком поздно, чтобы ответить на этот вопрос.Однако мне бы хотелось, чтобы ответ кому-нибудь помог!

На основании спецификации графической системы OpenG (версия 4.5 (профиль ядра) - 28 мая 2015 г.) говорится: «Количество вершин не ограниченоэто может быть указано, кроме размера массивов вершин. "см. стр. 322.

Извините, Николь Болас также упоминает здесь: https://stackoverflow.com/a/7369392/4228827

Приветствия, Наиф

...