У меня есть массив с плавающей точкой camObjCoord
, объявленный как ..
public static float camObjCoord[] = new float[8000];
Затем я заполняю его индексы в классе, который делает что-то вроде следующего ...
public void addcube(float highx, float lowx, float highz, float lowz){
//Constructing new cube...
System.out.println("f = " + f);
Global.cubes++;
float y = 1.5f;
System.out.println("highx = " + highx + "lowx = " + lowx + "highz = " + highz + "lowz = " + lowz);
//FRONT
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
//BACK
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = lowz;
i++;
//LEFT
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = lowz;
i++;
//RIGHT
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
//TOP
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = y;
i++;
camObjCoord[i] = lowz;
i++;
//BOTTOM
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = lowx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = highz;
i++;
camObjCoord[i] = highx;
i++;
camObjCoord[i] = -y;
i++;
camObjCoord[i] = lowz;
i++;
int p = 0;
System.out.println("FULL ARRAY");
while(p < 72){
System.out.println(camObjCoord[p]);
p++;
}
}
Я тогда звоню makeview()
public void makeview() {
Intent myIntent = new Intent(this, GLCamTest.class);
Bundle b = new Bundle();
b.putFloatArray("tweets", camObjCoord);
myIntent.putExtras(b);
this.startActivity(myIntent);
}
и затем в новом классе он делает ...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle b = this.getIntent().getExtras();
float original[] = b.getFloatArray("tweets");
camObjCoord = original;
counter++;
}
Затем у меня есть другой класс class GLLayer
, и он выглядит следующим образом .. http://pastebin.org/394884 внутри этого класса я рисую куб (ы) из массива с плавающей точкой, я проверил и значения для куб действительно есть, и когда я кодирую массив, он работает, но когда я динамически строю массив, то, передавая его, куб не рисует. Я звоню в класс так ...
glView=new GLLayer(this);
mPreview = new CamLayer(this, glView);
Кто-нибудь знает, почему? Как бы я исправить мою проблему? Просто добавлю, я даю одинаковые значения точно таким же индексам при динамическом рисовании
final static float camObjCoord[] = new float[] {
// FRONT
-2.0f, -1.5f, 2.0f,
2.0f, -1.5f, 2.0f,
-2.0f, 1.5f, 2.0f,
2.0f, 1.5f, 2.0f,
// BACK
-2.0f, -1.5f, -2.0f,
-2.0f, 1.5f, -2.0f,
2.0f, -1.5f, -2.0f,
2.0f, 1.5f, -2.0f,
// LEFT
-2.0f, -1.5f, 2.0f,
-2.0f, 1.5f, 2.0f,
-2.0f, -1.5f, -2.0f,
-2.0f, 1.5f, -2.0f,
// RIGHT
2.0f, -1.5f, -2.0f,
2.0f, 1.5f, -2.0f,
2.0f, -1.5f, 2.0f,
2.0f, 1.5f, 2.0f,
// TOP
-2.0f, 1.5f, 2.0f,
2.0f, 1.5f, 2.0f,
-2.0f, 1.5f, -2.0f,
2.0f, 1.5f, -2.0f,
// BOTTOM
-2.0f, -1.5f, 2.0f,
-2.0f, -1.5f, -2.0f,
2.0f, -1.5f, 2.0f,
2.0f, -1.5f, -2.0f,
};
Тогда он будет рендерить этот куб. Кажется, мне не нравится, что я делаю массив, а затем динамически добавляю индексы. Зачем? Как это исправить? Для награды я бы также принял соответствующий обходной путь, который будет работать в Android.
Спасибо.
edit1: я пробовал разные вещи, это не пропуск массива, вызывающий проблемы, если я должен был объявить массив следующим образом ...
edit2: я также попытался распечатать массив, поскольку он входит в GLLayer (класс, который отображает кубы), и все так, как вы ожидаете. Я понятия не имею, почему эти кубики не появляются: (
edit3: я добавил, как я строю массивы с плавающей точкой.
edit4: я также попытался установить размер массива равным количеству вводимых значений. Не работает.