Существует ли максимальный размер для объектов буфера вершин, связанных с 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, и я не вижу никаких ошибок.
Тем не менее, мои сетки отображаются неправильно. Кажется, что правильно рисуется только первая сетка. Есть ли что-то подозрительное в том, как я это реализовал? Я не хотел задавать этот вопрос слишком долго, поэтому, если вам понадобится дополнительная информация, дайте мне знать. Если в теории нет ничего неправильного, возможно, я просто допустил ошибку при реализации.