如何从字节数组创建直接DoubleBuffer

时间:2013-07-02 15:05:32

标签: java opengl-es buffer

我有以下代码从字节数组创建间接 DoubleBuffer。

ByteArrayInputStream bais;
Byte doubleGeomByteArray[];
DoubleBuffer dbb;
...
doubleGeomByteArray[] = new byte[ByteBuffer.wrap(intBuffer).order(endian).getInt() * 2 * 8];
bais.read(doubleGeomByteArray); //reads from ByteArrayInputStream into byte array
dbb = ByteBuffer.wrap(doubleGeomByteArray).order(endian).asDoubleBuffer();

这很好,但是我需要dbb direct ,因为它将与OpenGL ES一起使用

我该怎么做?

1 个答案:

答案 0 :(得分:0)

else语句中的代码也可以单独使用,因为它将捕获字节顺序,只是想显示两种不同的方式来做同样的事情。最上面一个是仅当数据字节顺序与本机匹配时。

if (endian.equals(ByteOrder.nativeOrder())){
    interimByteBuffer = ByteBuffer.allocateDirect(doubleGeomByteArray.length);
    dbb = interimByteBuffer.asDoubleBuffer();
    interimByteBuffer.put(doubleGeomByteArray);
}
else{
    interimByteBuffer = ByteBuffer.wrap(doubleGeomByteArray).order(endian);
    dbb = ByteBuffer.allocateDirect(numOfPoints * 2 * 8).order(ByteOrder.nativeOrder()).asDoubleBuffer();
    while(interimByteBuffer.hasRemaining()) {
        dbb.put(interimByteBuffer.getDouble());
    }
    dbb.flip();
}