我正在使用libgdx并拥有以下代码
float[] x;
...
Buffer vVertices=x;//what to do here?
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vVertices);
但我不确定如何将数组x传递给Buffer?有什么想法吗?
答案 0 :(得分:4)
ByteBuffer byteBuf = ByteBuffer.allocateDirect(x.length * Float.BYTES); //4 bytes per float
byteBuf.order(ByteOrder.nativeOrder());
FloatBuffer buffer = byteBuf.asFloatBuffer();
buffer.put(x);
buffer.position(0);
ByteBuffer和FloatBuffer都继承自Buffer。
答案 1 :(得分:4)
你应该这样做:
FloatBuffer vVertices = Buffers.newDirectFloatBuffer(x);
vVertices.rewind();
它适用于JOGL 2.0: static FloatBuffer newDirectFloatBuffer(float[] values)
如果您仍然使用JOGL 1,则此助手位于com.sun.opengl.util.BufferUtil类中。
最好的解决方案是使用LIBGDX中的方法: static java.nio.FloatBuffer newFloatBuffer(int numFloats)