Du solltest dir mal ein Tutorial über Pointer und Scanline suchen. Am Anfang hat das geklungen, als ob du eine eigene Render-Engine zusammenbauen wolltest, deahlb habe ich gedacht, ScanLine wäre kein Problem
.
Schon länger nichts mehr mit ScanLine gemacht, das sollte es aber sein:
Delphi-Quellcode:
procedure foo(bSource, bDest: TBitmap); //Der Schatten ist die Quelle, die Textur das Ziel
var pSource, pDest: PRGBQuad;
x, y: Integer;
begin
bSource.PixelFormat:=pf32bit;
bDest.PixelFormat:=pf32bit;
for y:=0 to bDest.Height-1 do
begin
pSource:=bSource.Scanline[y];
pDest:=bDest.Scanline[y];
for x:=0 to Bitmap.Width-1 do
begin
pDest^.rgbRed := pDest^.rgbRed-(255-pSource^.rgbRed);
pDest^.rgbBlue := pDest^.rgbBlue-(255-pSource^.rgbBlue);
pDest^.rgbGreen := pDest^.rgbGreen-(255-pSource^.rgbGreen);
// Wenn der Pixel in der Schatten-Bitmap weiß ist, wird an bSource nichts verändert, sonst eben dunkler
Inc(pDest);
Inc(pSource)
end
end
end;