Hey,
ik ben nog niet zo lang met de Jedi-SDL headers aant werken en ben dus voornamelijk allerlij kleine zaken aan het uittesten.
Ik probreer een procedure te maken die het kleuren palet van een surface laat roteren. Nu ik heb daarvoor onderstaande procedure gemaakt en deze werkt perfect voor 8 bit (256) kleuren modusen, maar zodra ik 8 bit fullscreen gebruik faalt de functie op de copymemory call. Ik heb geen idee waarom, kan iemand me het uitleggen ? En is copymemory wel een goede manier voor dit probleem ?
bedankt.
ik ben nog niet zo lang met de Jedi-SDL headers aant werken en ben dus voornamelijk allerlij kleine zaken aan het uittesten.
Ik probreer een procedure te maken die het kleuren palet van een surface laat roteren. Nu ik heb daarvoor onderstaande procedure gemaakt en deze werkt perfect voor 8 bit (256) kleuren modusen, maar zodra ik 8 bit fullscreen gebruik faalt de functie op de copymemory call. Ik heb geen idee waarom, kan iemand me het uitleggen ? En is copymemory wel een goede manier voor dit probleem ?
bedankt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| procedure SDL_movepallete(Surface : PSDL_Surface; Movedown : boolean); var Pal : TSDL_ColorArray; Temp : TSDL_Color; Tel : UInt32; begin // Get the current palette from the surface CopyMemory(@Pal,Surface.Format.Palette.Colors,Length(pal)); if Movedown then begin Temp := Pal[Surface.Format.Palette.NColors-1]; for Tel := Surface.Format.Palette.NColors -2 downto 0 do Pal[Tel+1] := Pal[Tel]; Pal[0] := Temp; end else begin Temp := Pal[0]; for Tel := 0 to Surface.Format.Palette.NColors -2 do Pal[tel] := Pal[tel+1]; Pal[Surface.Format.Palette.NColors-1] := Temp; end; SDL_SetPalette(Surface,SDL_LOGPAL or SDL_PHYSPAL,@Pal,0,Surface.Format.Palette.NColors); end; |
[ Voor 14% gewijzigd door Verwijderd op 22-12-2003 05:56 ]