Я создал буфер вершин, который правильно рисует при использовании glDrawArrays, однако они не загружаются в VBO.Вот код:
FloatBuffer circleBuffer = ByteBuffer.allocateDirect(numVertices * 3 *
4).order(ByteOrder.nativeOrder()).asFloatBuffer();
for (int j = 0; j < numVertices; j++) {
circleBuffer.put((float) (Math.cos(theta)));
circleBuffer.put((float) (Math.sin(theta)));
circleBuffer.put(1);
theta += 2 * Math.PI / (numVertices);
}
int[] buffer = new int[1];
int circleIndex=0;
gl11.glGenBuffers(1, buffer,0);
circleIndex = buffer[0];
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, circleIndex);
gl11.glBufferData(GL11.GL_ARRAY_BUFFER, circleBuffer.capacity() * 4,
circleBuffer, GL11.GL_STATIC_DRAW);
Я вычислил емкость буфера, и он равен 105, а остальное равно 0. Я также попытался переназначить FloatBuffer в качестве буфера.Что здесь не так?Спасибо!
ERROR/AndroidRuntime(7127): java.lang.IllegalArgumentException: remaining() < size
ERROR/AndroidRuntime(7127): at com.google.android.gles_jni.GLImpl.glBufferData(Native Method)
РЕДАКТИРОВАТЬ - Решение
<code>
buffer.flip();