public ByteBuffer getData() {
        ByteBuffer d = bo.getData();
        if (source == null || d != source || slice == null) {
            source = d;
            int currentPos = source.position();
            int currentLimit = source.limit();
            assert end < source.capacity() : "Can't set limit at " + end + " on capacity " + source.capacity();
            source.limit(end + 1);
            source.position(start);
            slice = source.slice();
            slice.order(source.order());
            assert slice.limit() == (end - start + 1) : "Capacity is " + slice.limit() + " but " + (end - start + 1) + " expected";
            source.limit(currentLimit);
            source.position(currentPos);
        }
        slice.rewind();
        return slice;
    }
Rewind and get a ByteBuffer pointing to this region of the main buffer

@return ByteBuffer
jme3-core/src/main/java/com/jme3/shader/bufferobject/BufferRegion.java