假设我有一个仅从位置0开始只有5个相关项的大ShortBuffer,以及一个容量小于大缓冲区的小缓冲区...
我如何将5个值从大缓冲区“放入”小缓冲区而又不会导致缓冲区溢出或不必手动索引所有这些值?
当前抛出一个缓冲区溢出异常:
indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.position(0);
subMeshes.get(subMeshIndex).indexBuffer.put(indexBuffer);
编辑:
还请注意,此后我需要从大缓冲区中更改数据,以便共享内存选项(例如重复等)不在表中
最佳答案
如果我正确地理解了您的需求,那么最简单的方法就是在较大的缓冲区上设置一个限制。批量处理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() );