如何将 ArrayList<Vector3f> 转换为 ByteBuffer?

How can I convert an ArrayList<Vector3f> to a ByteBuffer?

我正在尝试使用 JBullet 创建 TriangleIndexVertexArray,但为此我需要解析模型中所有顶点的 ByteBuffer

我得到了模型中所有顶点的 ArrayList<Vector3f>

如何将 Vector3f 的列表解析为 ByteBuffer

您可以按照下面的方式进行

声明你的顶点

ArrayList<Vector3f> verticesnew = new ArrayList<Vector3f>();

设置顶点

vertices.add( new Vector3f(someVertice) );

从顶点获取浮动缓冲区:

// There are 3 floats needed for each vertex (x,y,z)
int bufferSize = vertices.size() * 3 * Float.SIZE;
FloatBuffer verticesBuffer = ByteBuffer.allocateDirect( bufferSize ).order( ByteOrder.nativeOrder() ).asFloatBuffer();

// Copy the values from the list to the direct float buffer
for ( Vector3f v : vertices )
    verticesBuffer.put( v.x ).put( v.y ).put( v.z );