Большой вершинный буфер данных

Я пытаюсь нарисовать много квадратов, загружая данные вершин (координаты позиции и текстуры) в VBO. Моя проблема, когда я пытаюсь загрузить все эти вершины, по какой-то причине он пропускает некоторые квадраты, оставляя пустое пространство. если я уменьшу количество квадратов, то этой проблемы не возникнет.

Вот как я пытаюсь настроить VBO:

float[] vertexData = new float[<large number>];
//fill vertexData with 5 floats per square
FloatBuffer vertexBuffer = ByteBuffer.allocateDirect(vertexData.length * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
vertexBufferBackground.put(vertexData).position(0);

int[] buffers = new int[1];
GLES20.glGenBuffers(1, buffers, 0);

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, buffers[0]);
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, vertexBuffer.capacity() * 4, vertexBuffer, GLES20.GL_STATIC_DRAW);
bufferIDBackground = buffers[0];

И вот как это отображается:

GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, bufferID);
GLES20.glEnableVertexAttribArray(mPositionHandle);
GLES20.glVertexAttribPointer(mPositionHandle, 3, GLES20.GL_FLOAT, false, 20, 0);

GLES20.glEnableVertexAttribArray(mTexCoordLoc);
GLES20.glVertexAttribPointer(mTexCoordLoc, 2, GLES20.GL_FLOAT, false, 20, 12);
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);

Большая часть кода была опущена для простоты, я показываю только то, что считаю актуальным. Дайте мне знать, если этого недостаточно.

Изменить: вот изображение моей проблемы:введите описание изображения здесь

Обновление: я разделил буферы на более мелкие куски и визуализировал их по отдельности. Вот результаты (отредактированные с помощью MS Paint):
2x2 порции:введите описание изображения здесь

4x4 порции:введите описание изображения здесь

Предполагается, что нижние левые угловые плитки 4х4 пусты. Предполагается, что соседний кусок полностью заполнен. Похоже, что существует некоторое ограничение на количество вершин, которые может хранить / визуализировать один буфер, 3 для 2x2 и 9 для 4x4. (игнорировать зеленый материал, там в другом буфере).
Куски 1x1 (каждая плитка находится в своем собственном буфере) отрисовывает все полностью нормально, но производительность получает огромный удар.

0 ответов

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