I’ve got the following float array public static float camObjCoord[] = new float[8000]; declared as a global variable. I’m then adding content to it by calling the following method:
public void addcube(float highx, float lowx, float highz, float lowz){
//Constructing new cube...
Global.cubes = Global.cubes + 1;
float highy = 4.5f;
float lowy = 2.5f;
System.out.println("ADDING A CUBE!!");
//FRONT
Global.camObjCoord[Global.i] = highx;
Global.camObjCoord[Global.i+1] = lowy;
Global.camObjCoord[Global.i+2] = lowz;
Global.camObjCoord[Global.i+3] = highx;
Global.camObjCoord[Global.i+4] = lowy;
Global.camObjCoord[Global.i+5] = lowz;
Global.camObjCoord[Global.i+6] = highx;
Global.camObjCoord[Global.i+7] = highy;
Global.camObjCoord[Global.i+8] = lowz;
Global.camObjCoord[Global.i+9] = highx;
Global.camObjCoord[Global.i+10] = highy;
Global.camObjCoord[Global.i+11] = lowz;
//BACK
Global.camObjCoord[Global.i+12] = highx;
Global.camObjCoord[Global.i+13] = lowy;
Global.camObjCoord[Global.i+14] = highz;
Global.camObjCoord[Global.i+15] = highx;
Global.camObjCoord[Global.i+16] = highy;
Global.camObjCoord[Global.i+17] = highz;
Global.camObjCoord[Global.i+18] = highx;
Global.camObjCoord[Global.i+19] = lowy;
Global.camObjCoord[Global.i+20] = highz;
Global.camObjCoord[Global.i+21] = highx;
Global.camObjCoord[Global.i+22] = highy;
Global.camObjCoord[Global.i+23] = highz;
//LEFT
Global.camObjCoord[Global.i+24] = highx;
Global.camObjCoord[Global.i+25] = lowy;
Global.camObjCoord[Global.i+26] = lowz;
Global.camObjCoord[Global.i+27] = highx;
Global.camObjCoord[Global.i+28] = highy;
Global.camObjCoord[Global.i+29] = lowz;
Global.camObjCoord[Global.i+30] = highx;
Global.camObjCoord[Global.i+31] = lowy;
Global.camObjCoord[Global.i+32] = highz;
Global.camObjCoord[Global.i+33] = highx;
Global.camObjCoord[Global.i+34] = highy;
Global.camObjCoord[Global.i+35] = highz;
//RIGHT
Global.camObjCoord[Global.i+36] = highx;
Global.camObjCoord[Global.i+37] = lowy;
Global.camObjCoord[Global.i+38] = highz;
Global.camObjCoord[Global.i+39] = highx;
Global.camObjCoord[Global.i+40] = highy;
Global.camObjCoord[Global.i+41] = highz;
Global.camObjCoord[Global.i+42] = highx;
Global.camObjCoord[Global.i+43] = lowy;
Global.camObjCoord[Global.i+44] = lowz;
Global.camObjCoord[Global.i+45] = highx;
Global.camObjCoord[Global.i+46] = highy;
Global.camObjCoord[Global.i+47] = lowz;
//TOP
Global.camObjCoord[Global.i+48] = highx;
Global.camObjCoord[Global.i+49] = highy;
Global.camObjCoord[Global.i+50] = lowz;
Global.camObjCoord[Global.i+51] = highx;
Global.camObjCoord[Global.i+52] = highy;
Global.camObjCoord[Global.i+53] = lowz;
Global.camObjCoord[Global.i+54] = highx;
Global.camObjCoord[Global.i+55] = highy;
Global.camObjCoord[Global.i+56] = lowz;
Global.camObjCoord[Global.i+57] = highx;
Global.camObjCoord[Global.i+58] = highy;
Global.camObjCoord[Global.i+59] = highz;
//BOTTOM
Global.camObjCoord[Global.i+60] = highx;
Global.camObjCoord[Global.i+61] = lowy;
Global.camObjCoord[Global.i+62] = lowz;
Global.camObjCoord[Global.i+63] = highx;
Global.camObjCoord[Global.i+64] = lowy;
Global.camObjCoord[Global.i+65] = highz;
Global.camObjCoord[Global.i+66] = highx;
Global.camObjCoord[Global.i+67] = lowy;
Global.camObjCoord[Global.i+68] = lowz;
Global.camObjCoord[Global.i+69] = highx;
Global.camObjCoord[Global.i+70] = lowy;
Global.camObjCoord[Global.i+71] = highz;
}
I’m defining i in Global as 0 and it always remains 0… why? I’m calling:
GLLayer layers = new GLLayer(this);
layers.addcube(-6, -2, 2, 6);
…in another class.
(I can’t believe I’m saying this, but…)
Did you perhaps forgot to
Global.i += 72;after adding a cube?Alternately you could’ve also done
Global.camObjCoord[Global.i++] = ...for each of the assignments instead. This is a very slight “improvement”, because at least you won’t have to write+1,+2,+3, … and then+=at the end.I fear that this advise will do more harm than good, though. If at all possible, the design should be reworked immediately. Generally speaking there are much better alternatives than using
Globalandfloat[], but given that this is for OpenGL, those options may or may not be applicable.