Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
24. Feb 2016
@Memnarch: Deine Methode überspringt auch 3/4 der Pixel :mrgreen:
Inc(LPixel, SizeOf(TRGBA));
Bei inc wird ein typisierter Pointer immer um die Größe des Typs inkrementiert. (Auch ohne Angabe des 2. Parameters)
D.h. mit deinem Code springst du nicht SizeOf(TRGBA) Bytes weiter, sondern SizeOf(TRGBA)*SizeOf(TRGBA) Bytes
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
24. Feb 2016
Das ist mir im Nachhinein auch noch aufgefallen, stimmt.
Nachdem ich gerade CMPEQPS nochmal nachgeschlagen habe, muss ich sagen: Auch da hast du Recht.
Ich hatte es so gelesen, dass es entweder nur ein true für "alles ist gleich" oder ein false "irgendwas ist anders" gibt.
Okay dann ist meine SSE-Variante wohl Schrott :mrgreen:
Ein Versuch wars Wert :stupid:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
23. Feb 2016
So ich habe mich mal an SSE versucht.
Es scheint zu funktionieren (hab jetzt keine Bilder wo ichs richtig testen könnte), aber wie schnell/langsam das ist und ob der
Code wirklich fehlerfrei ist kann ich nicht sagen. Habe bisher noch nie was mit SSE gemacht.
Und das Bitmap sollte ein Vielfaches von 4 Pixeln groß sein, sonst knallts wahrscheinlich bzw. man müsste das abfangen.
function...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
22. Feb 2016
Hast du meinen letzten Vorschlag mal probiert?
Würde mich echt interessieren ob das schneller ist :)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
22. Feb 2016
Hab ne andere Idee:
function HasTransparentRGBAValues (const bm:TBitmap): Boolean;
var
x, z: Integer;
pixel: PRGBQuad;
sum: Cardinal;
begin
pixel := bm.Scanline;
z := bm.Width * bm.Height;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
22. Feb 2016
Wow, da würde mich aber mal interessieren wie der generierte Assemblercode im Release aussieht :shock:
Hab hier grad nur Delphi 7 und mein Assemblercode hat deutlich weniger Anweisungen und kein cmp - Hätte da zumindest keinen so großen Vorsprung erwartet (wenn ich schon verliere :mrgreen: )
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
22. Feb 2016
Hallo,
Ich habe mal ne (Teil-)Assemblerversion gebaut:
function HasTransparentRGBAValues(const bmp: TBitmap): Boolean;
label schleife, ende, hasTrans;
var z: Integer; RGBA: PRGBQuad;
begin
Result := false;
RGBA := bmp.Scanline;
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Neutral General,
22. Feb 2016
Delphi optimiert das normalerweise (wenn möglich) von selbst beim compilieren.