With your new method, I get around 6300 frames while the other two only get arround 225 FPS on my AthlonXP 2000+.

Well, I got another question concerning surfaces. Here is some sourcecode to illustrate my problem:

[pascal]

// Version A
procedure TfrmTest.DrawInterface;
begin
surfInterface.Fill(0);
InterfaceImages.Items.Items[0].Draw(surInterface, 0, 0, 0);
end;

procedure TfrmTest.DXDrawInitialize(Sender: TObject);
begin
DXDrawTimer.Enabled := true;
surInterface := TDirectDrawSurface.Create(DXDraw.DDraw);
surInterface.SetSize(DXDraw.Width, DXDraw.Height);

DrawInterface;
end; // Version A

// Version B
procedure TfrmTest.DXDrawInitialize(Sender: TObject);
begin
DXDrawTimer.Enabled := true;
surInterface := TDirectDrawSurface.Create(DXDraw.DDraw);
surInterface.SetSize(DXDraw.Width, DXDraw.Height);

surfInterface.LoadFromGraphic(InterfaceImages.{... }.graphic)
end; // Version B

// A & B
procedure TfrmTest.DXDrawTimerTimer(Sender: TObject; LagCount: Integer);
begin
DXDraw.Surface.Draw(0, 0, surInterface, true);
DXDraw.Flip;
end; // A & B
[/pascal]

Version A dosent bring anything on my screen, Version B does. If I would call DrawInterface at the Timer Event it would draw it as well. Isn't it possible to draw Images of an DXImageList athe DXDrawInitialize Event?