我正在玩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);
有谁知道为什么会这样?
更新:我已经比较了写入和加入的数据并且它们是相同的。问题仍然存在,这更令人困惑。
答案 0 :(得分:0)
好吧,我没有解决问题,但是我没有把vertexbuffer写入文件,而是尝试编写一个打包缓冲区(包含顶点,纹理坐标,法线等),这完美无缺。我无法弄清楚为什么这个工作,单个缓冲区不能,但根据我的需要,问题得到解答。