没有整个缓冲区的java ShortBuffer数据传输

时间:2011-11-22 21:14:08

标签: java copy overflow buffer

如果我有一个大的ShortBuffer,只有5个相关项目从0位开始,而一个小缓冲区的容量小于大缓冲区... 如何将大缓冲区中的5个值“放入”小缓冲区而不会导致缓冲区溢出或者必须手动索引所有缓冲区?

目前抛出一个缓冲区溢出异常:

indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.put(indexBuffer);

编辑: 另请注意,我之后需要更改大缓冲区中的数据,因此重复等共享内存选项不在桌面上

1 个答案:

答案 0 :(得分:2)

如果我正确理解您的需求,最简单的方法是对较大的缓冲区设置限制。当您执行批量put时,它最多只能转移limit项。您可以通过以下方式执行此操作:

indexBuffer.position(0);
indexBuffer.limit(5); // <-- limit to 5 temporarily
subMeshes.get(subMeshIndex).indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.put(indexBuffer);
indexBuffer.limit( indexBuffer.capacity() );