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