Я использую libgdx и имею следующий код
float[] x; ... Buffer vVertices=x;//what to do here? gl.glVertexPointer(2, GL10.GL_FLOAT, 0, vVertices);
Но я не уверен, как передать массив x в Buffer? Есть идеи?
Вы должны сделать это:
FloatBuffer vVertices = Buffers.newDirectFloatBuffer(x); vVertices.rewind();
Отлично работает с JOGL 2.0: статический FloatBuffer newDirectFloatBuffer (значения с плавающей точкой [])
Если вы все еще используете JOGL1, этот помощник находится в классе com.sun.opengl.util.BufferUtil.
Лучшее решение состоит в использовании метода из LIBGDX: static java.nio.FloatBuffer newFloatBuffer (int numFloats)
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.