Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#32

AW: pf8Bit seltsames aussehen der Palette

  Alt 17. Apr 2016, 22:14
Ich versuche immer noch den kram zu beschleunigen.

Delphi-Quellcode:
    for i := 0 to BuffBMP.Height - 1 do
    begin
      Value := round(Sqrt(Sqrt(Buffer[i + 1]) * 4 * BuffBMP.Width));

      if bScanLines then
      begin
        QueryPerformanceCounter(timeDraw0);

// X := BuffBMP.ScanLine[BuffBMP.Height - i - 1];
// Move(X[OffsetX], X[0], (BuffBMP.Width - OffsetX));

        for m := 0 to pred(OffsetX) do
          X[BuffBMP.Width - OffsetX + m] := Value;

        QueryPerformanceCounter(timeDraw1);
        timeDraw := timeDraw + (timeDraw1 - timeDraw0);
      end
      else
      begin
        QueryPerformanceCounter(timeDraw0);

        BuffBMP.Canvas.Pixels[ColumnCounter, BuffBMP.Height - i] := Value; //RGB(R, G, B);
        QueryPerformanceCounter(timeDraw1);
        timeDraw := timeDraw + (timeDraw1-timeDraw0);
      end;

    end;
Ich habe jetzt den Auskommentierten Teil in eine eigene Schleife gebunden.
Um beim zuweisen der Farben das ganze zu beschleunigen.

Delphi-Quellcode:
  for i := 0 to BuffBMP.Height - 1 do
  begin
    X := BuffBMP.ScanLine[BuffBMP.Height - i - 1];
    Move(X[OffsetX], X[0], (BuffBMP.Width - OffsetX));
  end;
Das geht relativ schnell, das Problem ist nur das bei der Übergabe der Value das Bitmap nicht gefüllt wird.
Eigentlich müsste es doch egal sein ob ich den Pointer vorher verschiebe anstatt in der Schleife zum ermitteln der Farben.

Wo ist mein Denkfehler?
In X müssten doch die richtigen Pointer liegen.
X: PByteArray;

gruss

Geändert von EWeiss (17. Apr 2016 um 22:18 Uhr)
  Mit Zitat antworten Zitat