我需要从一组动态的浮点数中创建 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 不仅仅是一个临时空间)。