我有以下代码从字节数组创建间接 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一起使用
我该怎么做?
答案 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();
}