如何将 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 );
我正在尝试使用 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 );