读取和写入FloatBuffer作为android中的二进制文件

时间:2012-10-30 20:23:50

标签: android opengl-es buffer floatbuffer

我正在玩OpenGL ES 2和FloatBuffers。实际上我尝试将处理Vertices数据的FloatBuffer保存到二进制文件中。 它似乎工作,但在读取浮动并将它们放回到FloatBuffer后,对象就搞砸了。

为了从我的Buffer中保存浮点数据,请使用以下代码:

for(int i = 0; i < bufferSize; i++)
 outStream.writeFloat(floatBuffer.get(i));

阅读:

for(int i = 0; i < bufferSize; i++)
  if(inStream.available() != 0)
    tmpFloat[i] = inStream.readFloat();

以这种方式创建FloatBuffers:

FloatBuffer VertexBuffer = ByteBuffer.allocateDirect(VertexFloatArray.length * mBytesPerFloat).order(ByteOrder.nativeOrder()).asFloatBuffer();
VertexBuffer.put(VertexFloatArray).position(0);

有谁知道为什么会这样?

更新:我已经比较了写入和加入的数据并且它们是相同的。问题仍然存在,这更令人困惑。

1 个答案:

答案 0 :(得分:0)

好吧,我没有解决问题,但是我没有把vertexbuffer写入文件,而是尝试编写一个打包缓冲区(包含顶点,纹理坐标,法线等),这完美无缺。我无法弄清楚为什么这个工作,单个缓冲区不能,但根据我的需要,问题得到解答。