我正在使用 libgdx 并有以下代码
float[] x;
...
Buffer vVertices=x;//what to do here?
gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vVertices);
但我不确定如何将数组 x 传递给 Buffer?任何的想法?
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。
你应该这样做:
FloatBuffer vVertices = Buffers.newDirectFloatBuffer(x);
vVertices.rewind();
它适用于 JOGL 2.0: 静态 FloatBuffer newDirectFloatBuffer(float[] values)
如果您仍然使用 JOGL 1,则此帮助程序位于 com.sun.opengl.util.BufferUtil 类中。
最好的解决方案是使用 LIBGDX 中的方法: static java.nio.FloatBuffer newFloatBuffer(int numFloats)