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 createVector3Buffer(final int vertices) { final FloatBuffer vBuff = createFloatBuffer(3 * vertices); return vBuff; } public static FloatBuffer createVector3Buffer(final FloatBuffer buf, final int vertices) { if (buf != null && buf.limit() == 3 * vertices) { buf.rewind(); return buf; } return createFloatBuffer(3 * vertices); } 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; } }