I'm trying to create an array of 144 FloatBuffers so I can easily access each one using an integer to pick which one. No, I don't mean a FloatBuffer 144 long. I'm investigating using 开发者_开发问答a class to contain all the FloatBuffers, but it'll take some time. Any thoughts?
I get
java.lang.ArrayIndexOutOfBoundsException: 0
on this line, no matter what method I use to try to instantiate the new FloatBuffer INTO the array:
for(int i=0; i<144;i++){
vbuffers[i] = BufferUtils.createFloatBuffer(buffervolume*7);
}
I also tried this and got the same error:
vbuffers[i]=FloatBuffer.allocate(buffervolume*7);
Here is the full relevant code:
public class myclass {
public FloatBuffer[] vbuffers;
public myclass(){
vbuffers=new FloatBuffer[chunklimit*chunklimit*4];
for(int i=0; i<144;i++){
vbuffers[i] = BufferUtils.createFloatBuffer(chunkvolume*7);
}
}
}
I would like to add that I ended up using one large FloatBuffer and glbuffersubdata to manage my data and got really great results.
The exception strongly suggests that vbuffers
is a zero-length array. Check that chunklimit
is non-zero.
In general, when you have code like this:
vbuffers = new FloatBuffer[chunklimit*chunklimit*4];
for(int i = 0; i < 144; i++) {
vbuffers[i] = ...
there's a risk that chunklimit*chunklimit*4
won't be the same as 144
, resulting in errors.
It is usually a better idea to use the size of the array in the for
loop:
vbuffers = new FloatBuffer[chunklimit*chunklimit*4];
for(int i = 0; i < vbuffers.length; i++) {
vbuffers[i] = ...
精彩评论