У меня большой объем точек, которые я читаю из файла, который имеет значения как 3D-положения, так и RGB. Я изо всех сил пытаюсь сделать это через Java + Android + OpenGL (ES).
Я создаю буфер вершин и буфер цвета:
private FloatBuffer vertexBuffer, colorBuffer;
Закрепить мои вершины в буфере:
ByteBuffer vbb = ByteBuffer.allocateDirect(lasVertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(lasVertices);
vertexBuffer.position(0);
И в моем розыгрыше (GL10 gl):
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glColorPointer(3, GL10.GL_FLOAT, 0, colorBuffer);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glPointSize(3);
gl.glDrawArrays(GL10.GL_POINTS, 0, 100);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
Который нарисует небольшой образец из 100 точек на экране, но без цвета. Я закрепил цвет в ColorBuffer, который я создал выше при запуске кода, например:
lasColors[i*3] = array[i].red;
lasColors[i*3+1] = array[i].green;
lasColors[i*3+2] = array[i].blue;
Но как я могу отобразить уникальные значения в шаге с позициями вершин?
Я попробовал то, что сделал с позициями:
vbb = ByteBuffer.allocateDirect(lasColors.length * 4);
vbb.order(ByteOrder.nativeOrder());
colorBuffer = vbb.asFloatBuffer();
colorBuffer.put(lasColors);
colorBuffer.position(0);
и показываю это в моей функции рисования:
gl.glColorPointer(3, GL10.GL_FLOAT, 0, colorBuffer);
... но результатов не было.
Спасибо за любую помощь !!