gpt4 book ai didi

java - 如何动态创建一个 FloatBuffer

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:40 24 4
gpt4 key购买 nike

我需要从一组动态的 float 创建 FloatBuffer(也就是说,我不知道提前的长度)。我发现这样做的唯一方法是相当不优雅(如下)。我假设我遗漏了一些东西,并且必须有一种更清洁/更简单的方法。

我的解决方案:

Vector<Float> temp = new Vector<Float>();
//add stuff to temp
ByteBuffer bb = ByteBuffer.allocateDirect( work.size() * 4/*sizeof(float)*/ );
bb.order( ByteOrder.nativeOrder() );
FloatBuffer floatBuf = bb.asFloatBuffer();
for( Float f : work )
floatBuf.put( f );
floatBuf.position(0);

我正在为 OpenGL 命令使用我的缓冲区,因此我需要保留它们(也就是说,生成的 FloatBuffer 不仅仅是一个临时空间)。

最佳答案

如果您通过 Java 使用 OpenGL API,我假设您正在使用 LWJGL 作为中介。如果是这样,有一个简单的解决方案,即使用 org.lwjgl 包中的 BufferUtils 类。 BufferUtils.createFloatBuffer() 方法允许您从 array 中放入 float,如果您使用的是 Vector ,是一个简单的转换。尽管它并不比您的方法好多少,但它确实节省了对足够讨厌的字节缓冲区的需求,并允许进行一些快速转换。此代码存在于 OpenGL 3.2+ 的新 LWJGL 教程中 here .

希望这对您有所帮助。

关于java - 如何动态创建一个 FloatBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11842645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com