如果我有一个大的ShortBuffer,只有5个相关项目从0位开始,而一个小缓冲区的容量小于大缓冲区... 如何将大缓冲区中的5个值“放入”小缓冲区而不会导致缓冲区溢出或者必须手动索引所有缓冲区?
目前抛出一个缓冲区溢出异常:
indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.put(indexBuffer);
编辑: 另请注意,我之后需要更改大缓冲区中的数据,因此重复等共享内存选项不在桌面上
答案 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() );