Java tutorial
//package com.java2s; /** * Copyright 2008 - 2011 * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * @project loonframework * @author chenpeng * @emailceponline@yahoo.com.cn * @version 0.1 */ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; public class Main { public static final int SIZEOF_FLOAT = 4; public static FloatBuffer ensureLargeEnough(FloatBuffer buf, final int required) { if (buf == null || (buf.remaining() < required)) { final int position = (buf != null ? buf.position() : 0); final FloatBuffer newVerts = createFloatBuffer(position + required); if (buf != null) { buf.rewind(); newVerts.put(buf); newVerts.position(position); } buf = newVerts; } return buf; } public static FloatBuffer createFloatBuffer(FloatBuffer buf) { FloatBuffer dest = createFloatBuffer(buf.capacity()); dest.clear(); dest.put(buf); dest.position(0); return dest; } public static FloatBuffer createFloatBuffer(FloatBuffer buf, int start, int end) { final float[] inds = new float[buf.limit()]; for (int x = start - 1; x < end - 1; x++) { inds[x] = buf.get(); } return createFloatBuffer(inds); } public static FloatBuffer createFloatBuffer(final int size) { final FloatBuffer buf = ByteBuffer.allocateDirect(SIZEOF_FLOAT * size).order(ByteOrder.nativeOrder()) .asFloatBuffer(); buf.clear(); return buf; } public static FloatBuffer createFloatBuffer(float... floats) { FloatBuffer fb = createFloatBuffer(floats.length); fb.put(floats); fb.position(0); return fb; } public static FloatBuffer createFloatBuffer(final FloatBuffer reuseStore, final float... data) { if (data == null) { return null; } final FloatBuffer buff; if (reuseStore == null || reuseStore.capacity() != data.length) { buff = createFloatBuffer(data.length); } else { buff = reuseStore; buff.clear(); } buff.clear(); buff.put(data); buff.flip(); return buff; } }