Witam,
Chciałbym rozwiać moje wątpliwości na temat tablic, gdyż albo ja ich nie rozumiem, albo coś jest nie tak ;) Ale po kolei:
zaczynam robić coś w openGL'u i chcę narysować kwadrat. Na początek muszę określić współrzędne wszystkich wierzchołków. Do tego służy mi tablica vertices.
Wg. tutoriala, mam to zrobić tak:
//tablica
private float vertices[] = {
-1.0f, -1.0f, 0.0f, // V1 - bottom left
-1.0f, 1.0f, 0.0f, // V2 - top left
1.0f, -1.0f, 0.0f, // V3 - bottom right
1.0f, 1.0f, 0.0f // V4 - top right
};
[...]
//wewnatrz ktorejs z funkcji
vertexBuffer.put(vertices); //ta funkcja przyjmuje tylko i wyłącznie zmienne float
Ja niestety nie mogę z góry określić wielkości tego kwadratu, gdyż wymyśliłem że będzie to robił użytkownik. Zrobiłem więc tak:
private float vertices[][];
[...]
//wewnątrz którejś z funkcji
vertices[0][0] = -(width/2);
vertices[0][1] = -(width/2);
vertices[1][0] = -(width/2);
vertices[1][1] = (width/2);
vertices[2][0] = (width/2);
vertices[2][1] = -(width/2);
vertices[3][0] = (width/2);
vertices[3][1] = (width/2);
[...]
vertexBuffer.put(vertices);
No i lekko mnie zaskoczył ten błąd:
The method put(float) in the type FloatBuffer is not applicable for the arguments (float[][])
Występuje on w tej linijce:
vertexBuffer.put(vertices);
Kiedy stosuję drugi sposób. Czytałem tutaj: http://javastart.pl/podstawy-jezyka/tablice-jednowymiarowe/ że oba przypadki są tablicami i różnią się jedynie sposobem zapisu.
Dlaczego więc zmienna vertices w sposobie 1 jest widziana jako float, a w sposobie 2 jaki float[][]?
Z góry dziękuję.