Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

tablica wskaźników

Ostatnio zmodyfikowano 2015-09-04 13:14
Autor Wiadomość
carlosmay
» 2015-09-04 09:52:59
C/C++
void f3( int * p[] ) { // działanie na zapisie tablicowym
    cout << * p[ 0 ];
    cout << ", " << * p[ 1 ];
    cout << ", " << * p[ 2 ] << endl;
}
void f4( int ** ppt ) { // działanie na zapisie wskaźnikowym
    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 ]; // tablica wskaźników
    ppt[ 0 ] = p1; // przypisanie wskaźników do poszczególnych elementów
    ppt[ 1 ] = p2;
    ppt[ 2 ] = p3;
    f3( & ppt[ 0 ] ); // przekazanie adresu pierwszego elem. do funkcji
    f4( & ppt[ 0 ] );
   
    _getch();
}
P-137257
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;)

C/C++
void f3( int * p[] ) {
    cout << * p[ 0 ]; /*problem jest tutaj, bo w glsl nie ma wskaźników, WARTOŚCI są kopiowane i nie mogę się odwołać do elementu przez adres*/
   
}

zakładam więc, że takiego sposobu nie ma, ale dzięki za pomoc
P-137258
Monika90
» 2015-09-04 12:03:15
C/C++
//tablica wskaźników
int * tablica1;
Nie widzę tu tablicy wskaźników.
P-137259
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.
P-137260
1 « 2 »
Poprzednia strona Strona 2 z 2