Ich habe folgendes Problem:
in meinem Spiel sollen bestimmte Teile der Hintergrundgrafik aufgehellt/abgedunkelt werden.
Ich versuche das so:
(buffer ist ein TBitmap)
Delphi-Quellcode:
for oy := 0 to buffer.Height-1 do
begin
row := buffer.ScanLine[oy];
for ox := 0 to buffer.Width-1 do
begin
gamma := 10;
if gamma <> 0 then
begin
b := cut(row[ox].rgbtBlue+gamma);
g := cut(row[ox].rgbtGreen+gamma);
r := cut(row[ox].rgbtRed+gamma);
row[ox].rgbtBlue := b;
row[ox].rgbtGreen := g;
row[ox].rgbtRed := r;
end;
end;
end;
und so:
Delphi-Quellcode:
type
TRGBTripleArray = array[0..32768] of TRGBTriple;
// 32768 = maximale Anzahl der Pixel in der Breite eines Bildes (also eine "ScanLine")
pRGBTripleArray = ^TRGBTripleArray; // Pointer auf TRGBTripleArray
Doch leider ist das furchtbar lahm! Ich brauche für ein 1024x768 großes bild eine halbe Minute! Dabei hatte ich schon öfters ScanLine verwendet, und da war das nicht so lahm.
(Apropos: Das ganze ist mit DelphiX in einem TSprite)
Was mache ich falsch?