Google が GDC 2011 で行った講演で提示された方法を使用して、圧縮されていない未加工の VBO データをロードしようとしました。残念ながら、私にとってはうまくいきません。そのためのハックな回避策を見つけることができました(以下のコードでコメントアウトされています)が、そのハックなしでこれを機能させたいと思います。これが私のコードのサンプルです:
FileInputStream fis = new FileInputStream(new File(location));
FileChannel fc = fis.getChannel();
MappedByteBuffer mbb = fc.map(MapMode.READ_ONLY, 0, fc.size());
// Hackery because passing mbb to glBufferData isn't working.
//FloatBuffer fb = mbb.asFloatBuffer();
//float triangles[] = new float[fb.capacity()];
//for(int i = 0; i < triangles.length; i++) {
// triangles[i] = fb.get(i);
//}
//fb = FloatBuffer.wrap(triangles);
bufferInfo = new int[3];
bufferInfo[0] = newBufferID();
int size = (int)fc.size();
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, bufferInfo[0]);
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, size, mbb, GLES20.GL_STATIC_DRAW);