Die meisten Game-Loops haben, zumindest ganz aussen drum rum, in etwa diesen Aufbau:
Delphi-Quellcode:
while true do
begin
HandleUserInputs;
ModifyWorldAccordingToInputsAndMechanics;
DrawNextFrame;
ShowFrame;
end;
Um die FPS zu zählen bietet es sich eher an die geschafften Frames in einer gewissen Zeitspanne zu zählen und auf eine Sekunde umzurechnen, da die Timer sonst dafür etwas ungenau werden können.
Deine geringe Framerate würde ich weniger auf die verwendete Schleifenart noch auf Direct2D zurück führen. Ich vermute eher stark, dass deine eigentlichen Zeichenvorgänge da die Schhuldigen sind. (Die Art der Schleife macht praktisch gar keinen Unterschied - so lange man Timer mal aussen vor lässt, die dort eh nichts zu suchen haben, und D2D ist für sich genommen durchaus in der Lage dazu viele FPS zu zaubern.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)