1

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

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

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);

有谁知道为什么会这样?

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

4

1 回答 1

0

好吧,我没有解决问题,但我尝试编写一个打包缓冲区(包含顶点、纹理坐标、法线等),而不是只将顶点缓冲区写入文件,这非常有效。我不知道为什么这会起作用,而单个缓冲区却不起作用,但为了我的需要,这个问题得到了回答。

于 2012-11-01T13:44:35.613 回答