4

我正在使用 libgdx 并有以下代码

    float[] x;
    ...
    Buffer vVertices=x;//what to do here?
    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vVertices);

但我不确定如何将数组 x 传递给 Buffer?任何的想法?

4

2 回答 2

5
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。

于 2012-01-02T22:35:38.223 回答
4

你应该这样做:

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)

于 2012-02-24T11:45:53.850 回答