glbuffersubdata со смещением в буфер, не вызывая мусора

Хороший день,

Я пытаюсь обновить часть VBO с вызовом к glBufferSubData (). Когда я обновляю от запуска (0) из моего существующего теневого буфера, нет никакой проблемы, поскольку буфер начинает читать от 0. Следующее будет читать 0 в y от буфера и помещать его в 0 к y в VBO:

gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, 0, y, mPositionBuffer);

Однако, если я хочу обновить часть VBO (не от 0), я сталкиваюсь с проблемой; следующее не работает, так как оно запишет значения из запуска буфера (0 к y) в положение x к x+y VBO:

gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, x, y, mPositionBuffer);

Изменение положения с помощью buffer.position (x) не имеет никакого эффекта:

gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, x, y, mPositionBuffer.position(x));

Решение состоит в том, чтобы нарезать () буфер, который работает отлично:

mPositionBuffer.position(x);
gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, x, y, mPositionBuffer.slice());

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

Вопрос: существует ли способ добраться, желаемый результат (замените часть смещения VBO использование смещения в буфер), не генерируя мусора? Как Вы, вероятно, предположили, это для игры андроида, и сборка "мусора" в игре нет - нет.

Спасибо! Aert.

1
задан Aert 1 August 2010 в 02:22
поделиться