rzutowanie wskaznikow

0

witam, mam pewien problem, najprawdopodobniej z rzutowaniem wskaznikow.

otoz mam zmienna 4ro bajtowa, ktora przyjmuje wartosci od 0 do 4 miliardow... (zapisywane na 4 bajtach).
nastepnie chcialbym uzyc tej zmiennej, jako koloru dla obiektu w opengl. zatem rzutuje wskaznik z unsigned long int
na GLubyte i nie dziala(aplikacja sie wysypuje). kod:

 
unsigned long int kolor;
kolor = rand();

glColor4ubv((GLubyte*)kolor); // <--- w tym miejscu aplikacja sie wysypuje

funkcja glColor4ubv przyjmuje jako parametr wskaznik na tablice 4 bajtow bez znaku (GLubyte).
ma ktos pomysl, jak to rozwiazac zeby dzialalo?

1

A nie można tak?

 glColor4ubv((GLubyte*)&kolor); 
1

Pomyśl co robisz... Rzutujesz WARTOŚĆ na wskaźnik... Klepiesz:

glColor4ubv((GLubyte*)&kolor);

Lub używasz unii:

union {
  unsigned long int num;
  GLubyte bytes[4];
} random_colour;
random_colour.num = rand();

glColor4ubv(random_colour.bytes);
0

<facepalm> dzieki za szybka odpowiedz!

1 użytkowników online, w tym zalogowanych: 0, gości: 1