tablica wskaźników
Ostatnio zmodyfikowano 2015-09-04 13:14
carlosmay |
» 2015-09-04 09:52:59 void f3( int * p[] ) { cout << * p[ 0 ]; cout << ", " << * p[ 1 ]; cout << ", " << * p[ 2 ] << endl; } void f4( int ** ppt ) { cout << ** ppt; cout << ", " << **( ppt + 1 ); cout << ", " << **( ppt + 2 ); cout << endl; } int main() { int * p1, * p2, * p3; int a, b, c; a = 5; b = 6; c = 3; p1 = & a; p2 = & b; p3 = & c; int * ppt[ 3 ]; ppt[ 0 ] = p1; ppt[ 1 ] = p2; ppt[ 2 ] = p3; f3( & ppt[ 0 ] ); f4( & ppt[ 0 ] ); _getch(); } |
|
stevy Temat założony przez niniejszego użytkownika |
» 2015-09-04 11:40:08 że tak to działa carlo, to ja wiem, nie programuję od wczoraj;) void f3( int * p[] ) { cout << * p[ 0 ]; }
zakładam więc, że takiego sposobu nie ma, ale dzięki za pomoc |
|
Monika90 |
» 2015-09-04 12:03:15 Nie widzę tu tablicy wskaźników. |
|
Lora |
» 2015-09-04 13:14:56 Z tego co rozumiem to masz tablicę ze wskaźnikami do różnych wartości porzucanych w różnych miejscach programu i chcesz przekazać wszystkie te wartości do shadera za pomocą jednej komendy glUniform1iv . Problem w tym, że funkcja glUniform1iv przekazuje do shadera tablicę, a tablice mają to do siebie, że ich wartości są poustawiane w pamięci po kolei. Funkcja znając wskaźnik na pierwszy element, typ elementów oraz ich liczbę, po prostu pobiera po kolei z pamięci dane wartości. Natomiast twoja tablica zawiera wskaźniki do różnych elementów, które nie są ustawione w pamięci po kolei, dlatego ta funkcja nie zadziała (znaczy zadziała, ale nie tak jakbyś chciał). Wydaję mi się, że najlepszym wyjściem jest zrobienie od razu kontenera vector albo array i kopiowanie do niego wartości, które chcesz później przesłać do shadera. Bo robienie tablicy wskaźników, a później robienie drugiej tablicy intów i kopiowanie elementów z pierwszej tablicy do drugiej nie ma większego sensu. |
|
1 « 2 » |