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

Существует ли максимальный размер для объектов буфера вершин, связанных с 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)

Ваш ответ на вопрос