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

标签 java arraylist nio bytebuffer

我正在尝试创建一个 TriangleIndexVertexArray使用 JBullet,但要做到这一点,我需要解析 ByteBuffer模型中的所有顶点。

我有一个ArrayList<Vector3f>模型中的所有顶点。

如何解析此列表 Vector3f发送至 ByteBuffer

最佳答案

您可以按照以下方式进行

声明你的顶点

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

设置顶点

vertices.add( new Vector3f(someVertice) );

从顶点获取 float 缓冲区:

// 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 );

关于java - 如何将 ArrayList<Vector3f> 转换为 ByteBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121531/

相关文章:

Java Bean Utils 调用所有非 String 类型的 setter

java - 安卓 :Retrieving image from parse to an android activity

php - 如何用多维数组实现像excel小计函数这样的方法?

java arraylist.add 用最后一个值覆盖

java - 复制文件时出现静默错误

java - 如何存储多个字节数组

java - 无法使用经度和纬度 Android 获取地址

java - 数组列表循环故障

java.nio.channels.DatagramChannel 基本 UDP RX 客户端连接

java - 如何在 Java NIO 中正确关闭 SocketChannel?