opengl中画图的时候要用到FloatBuffer,而点往往是存在数组中的,因此要转化一下。定义个FloatBuffer,
private FloatBuffer mTriangleBuffer;
- public class BufferUtil {
- public static FloatBuffer mBuffer;
- public static FloatBuffer floatToBuffer(float[] a){
- //先初始化buffer,数组的长度*4,因为一个float占4个字节
- ByteBuffer mbb = ByteBuffer.allocateDirect(a.length*4);
- //数组排序用nativeOrder
- mbb.order(ByteOrder.nativeOrder());
- mBuffer = mbb.asFloatBuffer();
- mBuffer.put(a);
- mBuffer.position(0);
- return mBuffer;
- }
- }
注意:这里有个排序的问题,是使用大端(BIG_ENDIAN)还是用小端(LITTLE_ENDIAN),在android里面,opengl画图must use native order direct buffer,否则报错,这里我们直接使用allocateDirect和nativeOrder,就能满足android的要求。
参考: http://blog.csdn.net/onicewalk/article/details/6134159