
Falls jemand den Effekt nicht kennt:
Das ist der klassische "Milchglas"-Effekt, also z.B. wenn im Fernsehen Gesichter nicht gezeigt werden sollen, oder sie einem die Details bei nackigen Damen in Spielen "zensieren"

Damit kann man viel machen und wenn man den Effekt im repeat über das Bild laufen lässt, bekommt man einen interessanten "Auflösungseffekt". Um den geht es mir hier und deshalb ist auch die Geschwindigkeit wichtig.
Das Prinzip: Jeder Pixel bekommt als neue Farbe den Durchschnittswert der vier Pixel um ihn herum.
Code: Alles auswählen
for y := 1 to 200 do
begin
for x := 1 to 320 do
begin
mem[$0A000:x+(320*y)] :=
( mem[$0A000:(x-1)+(320*y)]+
mem[$0A000:(x+1)+(320*y)]+
mem[$0A000:x+(320*(y-1))]+
mem[$0A000:x+(320*(yp+1))] ) div 4;
end;
end;
Meine optimierteste / schnellste Version ist jetzt diese hier:
Code: Alles auswählen
xt:=0;
for y := 1 to 200 do
begin
for x := 1 to 320 do
mem[$0A000:x+jt] :=
( mem[$0A000:(x+1)+xt]+
mem[$0A000:(x-1)+xt]+
mem[$0A000:x+(xt+320)]+
mem[$0A000:x+(xt-320)] ) shr 2;
xt := xt+320;
end;
Mir würde jetzt nur noch einfallen, das Ganze in Assembler umzusetzen. Da bin ich nur total raus... Oder habt ihr noch eine gute Idee für mich?