kategoria: ANSI C
[#1] [RTG, Chunky, AGA] Jak zmienić paletę kolorów w trybie RTG 8 bit?
Cześć,
Mam taki problem, nie wiem jak zmienić paletę kolorów w trybie RTG 8 bit (chunky).
To samo otwarte w trybie AGA działa ok, w trybie RTG 8 się zawiesza... tzn., korzystam albo z SetRGB32(..)
lub SetRGB4(..) obie nie działają..

for(int i = 0; i < 256; i++)
{
   SetRGB4(&FRM_screen->ViewPort, i, tmp_palette[i].r, tmp_palette[i].g  ,tmp_palette[i].b);
}


Przy okazji chcę powiedzieć że w trybie RTG mó program "działa" w sensie jest OK ale Paleta kolorów jest randomowa - nie mogę jej ustawić
[#2] Re: [RTG, Chunky, AGA] Jak zmienić paletę kolorów w trybie RTG 8 bit?

@mateusz_s, post #1

SetRGB4() moze przyjac tylko 32 barwy a ustawiasz 256. Dodatkow zmienne r, g, b moga byc tylko z zakresu 0-15.

SetRGB32() musi dzialc.
[#3] Re: [RTG, Chunky, AGA] Jak zmienić paletę kolorów w trybie RTG 8 bit?

@mateusz_s, post #1

Ja bym spróbował skorzystać z funkcji SetRGB32CM(). Jej parametrem jest ColorMap, który pobierzesz z ViewPort:

SetRGB32CM(Screen->ViewPort.ColorMap, i, Red, Green, Blue);

Ona nie powinna się zawiesić, bo kolory są ustawiane w ColorMap, a nie bezpośrednio na ekran.

Po ustawieniu kolorów wywołaj funkcje MakeScreen(Screen) i RethinkDisplay(), żeby system załadował kolory na ekran.

Polecam jednak korzystać z alokacji ołówków i ustawiania kolorów za pomocą ObtainPen() oraz ObtainBestPenA() - tak jest mega-bezpiecznie, ale czasami kolory mogą być zarezerwowane.

ObtainPen(Screen->ViewPort.ColorMap, i, Red, Green, Blue, 0);

Kiedyś również miałem problem z kolorami pod OS 4.1 pod RTG, i chyba nie istnieje jakaś uniwersalna metoda do ustawiania kolorów w 8-bit.

Ostatnia aktualizacja: 13.10.2023 18:08:46 przez Hexmage960
1
[#4] Re: [RTG, Chunky, AGA] Jak zmienić paletę kolorów w trybie RTG 8 bit?

@Hexmage960, post #3

Mozna tez uzyc LoadRGB32(). Mysle ze to bedzie nawet prosciej. Podaje sie wtedy wskaznik pod tablice kolorow.
1
[#5] Re: [RTG, Chunky, AGA] Jak zmienić paletę kolorów w trybie RTG 8 bit?

@mateusz_s, post #1

Ok, dzieki za pomoc.. udało się za pomocą SetRGB32
ona pobiera parametry jako ULONG a SetRGB4 jako UBYTE.

W SetRGB32 tylko trzeba było przesunąć dany kolor tak zeby dwa pierwsze bity był z lewej, np:
SetRGB32(Videport, nr, (200<<24), (150 << 24), (5 << 24) );
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem