Du kannst Andorra2D dafür verwenden, aber das wird dir wahrscheinlich kaum einen Peformancegewinn bringen (möglicherweise sogar das Gegenteil), weil Andorra bzw.
DirectX und
OpenGL für solche Singe nicht konzipiert sind. Was du hier machst, sind nämlich in erster Liniue Speicheroperationen - Grafikkarten sind aber nur auf Zeichenoperationen optimiert; und wenn du Pech hast, erledigen sie das Herumschieben von Grafikdaten im Schneckentempo.
Außerdem glaube ich nicht, dass Hardwarebeschleunigung für eine solch triviale Operation nötig sind. Die
Graphics32-Bibliothek würde sich hingegen anbieten. Mein Ansatz:
Delphi-Quellcode:
type
TfrmMain = class(TForm);
private
FBuffer: TBitmap32;
procedure InsertScanline;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
FBuffer := TBitmap32.Create;
FBuffer.SetSize(320, 2000);
end;
procedure TfrmMain.InsertScanline;
begin
// Hochschieben
Move(
// Von 2. Zeile
FBuffer.PixelPtr[1, 0]^,
// In die 1. Zeile
FBuffer.PixelPtr[0, 0]^,
// Für alle Zeilen unterhalb der ersten Zeile
(FBuffer.Height-1)*FBuffer.Width
);
// Neue Zeile unten einfügen
Move(
{<Input von Kamera>},
FBuffer.PixelPtr[0, FBuffer.Height-1]^,
// eine Zeilenbreite
FBuffer.Width
);
// Buffer auf Form blitten (GR32 hat auch Funktionen zum Stretchen)
FBuffer.DrawTo(Canvas.Handle, 0, 0);
end;