Thanks for your replies, I just tried the executable myself and suddenly it works fine! But if I run it from the IDE (Delphi 5), it still doesn't.

It stops at DXDraws.pas(5006): FindDevice

Direct3D.EnumDevices(@EnumDeviceCallBack, rec);

Call stack:

FindDevice
EnumDirectDrawDriverCallback(nil,'Primair beeldschermstuurprogramma','display',$12F04
DXDirectDrawEnumerate(,)
EnumDirectDrawDriverCallback($4556FF,'¬§??','?©‚Ä ú?úø?´?¢_^[‚Ä??•]?Ç',$12F94
Direct3DInitializing_DXDraw([idoRetainedMode..(out of bound) 7],)
TCustomDXDraw.Initialize
TForm1.FormKeyDown(,,[ssAlt])
TCustomDXDraw.FormWndProc(,$DC1854)
Sprites

I tried it in Delphi 7 and all works fine. The call stack looks pretty much the same there (including the strange symbols), but doesn't have the "out of bound". Could I be mixing up DelphiX versions or something?

Quote Originally Posted by Clootie
BeginScene / EndScene are required by API. But actually do [almost] nothing and don't steal a lot of CPU power from you. So, just call them once per frame [per rendertarget] and forget about them!
Well, it does make the difference betwee 543 and 440 fps in my test...

Quote Originally Posted by Speeeder
You know DXTimer has a .FrameRate property
Yes, I'm using it, but I see I could have left out the LastFPS variable, that was for when I had the FPS on the title bar.