public static SharedGeometryHandle addGeometry(GLDrawContext dc, float[] data) throws IllegalBufferException { if(staticdc == null) staticdc = dc; int sgeometryIndex = 0; while(true) { // create an instance if needed if(geometries.size() == sgeometryIndex) geometries.add(new SharedGeometry(dc, ++maxIndex)); SharedGeometry geometry = geometries.get(sgeometryIndex); // generate it geometry.validate(dc); // skip if we wont fit if (geometry.size < CAPACITY) { // add it to our vbo generate_buffer.asFloatBuffer().put(data); dc.updateGeometryAt(geometry.geometry, QUAD_SIZE*geometry.size, generate_buffer); generate_buffer.rewind(); geometry.size++; return new SharedGeometryHandle(geometry); } sgeometryIndex++; } }