Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Schneller Timer gesucht (https://www.delphipraxis.net/85372-schneller-timer-gesucht.html)

blablab 29. Jan 2007 23:10


Schneller Timer gesucht
 
Hallo,

ich hab folgendes Problem:
ich brauch einen Timer oder so was ähnliches, das jedoch schneller ist als der standard-Windows-Timer...
ich will nämlich, dass z.b. die geschwindigkeit eines bewegten Kastens auf dem Bildschirm auf jedem Rechner gleich ist.

Wie machen das denn die normalen 3d spiele???

es kann auch ruhig keinen timer benutzen und 100% auslastung benötigen. Hautsache es geht schnell!!!

Schonmal Danke!!!

Gruß
Simon

fwsp 29. Jan 2007 23:16

Re: Schneller Timer gesucht
 
Zitat:

Zitat von blablab
Wie machen das denn die normalen 3d spiele???

mit DirectX oder OpenGL oder ähnlichem.

blablab 29. Jan 2007 23:30

Re: Schneller Timer gesucht
 
aber wie wird das da gelöst?
es soll nicht unbeding an die grafik gebunden sein.
ich brauch "nur" so nen timer.
Oder besser einen algorithmus, der halt dann 100% auslastung hat, der mir aber garantiert, dass es überall gleich schnell läuft (solange der rechner das mitmacht...)

ich wollte eigentlich permanent die zeit abfragen und mich danach richten, gettickcount ist dazu aber zu ungenau...

alzaimar 29. Jan 2007 23:36

Re: Schneller Timer gesucht
 
Erzeug Dir eine Schleife und miss beim Programmstart z.B. 100000 Durchgänge. Daraus kannst du eine individuelle Wartezeit zwischen zwei Frames ausrechnen.

blablab 29. Jan 2007 23:39

Re: Schneller Timer gesucht
 
ja aber das ist doch nicht auf jedem rechner gleichschnell, oder blick ichs jetzt net???

fwsp 29. Jan 2007 23:40

Re: Schneller Timer gesucht
 
das kannst du ja in deinem programm auf jedem rechner ausführen lassen.

blablab 29. Jan 2007 23:42

Re: Schneller Timer gesucht
 
das bedeutet ich soll die zeit für 10000000 schleifendurchgänge messen und dann dementsprechend ausrechnen, wie viele schleifendurchgänge ich z.b. für eine ms brauche???

wie messe ich denn die zeit genauer als mit gettickcount???

Gruber_Hans_12345 29. Jan 2007 23:46

Re: Schneller Timer gesucht
 
glaub der befehl heisst QueryPerformanceTimer bzw. QueryPerformanceFrequency

blablab 29. Jan 2007 23:49

Re: Schneller Timer gesucht
 
das ich hier um die uhrzeit noch so gute antworten bekomme hätte ich nicht gedacht!!!

vielen dank schonmal, aber ich geh jetzt au langsam heia und probiers dann morgen aus.
Dann kann ich euch vielleicht mit neuen fragen quälen...

also dann gute nacht miteinander (falls ihr noch vorhabt zu schlafen...)

Gruß
Simon

Sunlight7 30. Jan 2007 03:18

Re: Schneller Timer gesucht
 
Moin!

MSDN-Library durchsuchentimeSetEvent ist ziemlich Präzise.
Vorher mit MSDN-Library durchsuchentimeBeginPeriod Einstelen...

Grüßle!

Gandalfus 30. Jan 2007 13:09

Re: Schneller Timer gesucht
 
Timertutorial

blablab 30. Jan 2007 18:46

Re: Schneller Timer gesucht
 
Erstmal danke für die vielen Antworten!
Ich denk mit den Funktionen QueryPerformanceTimer bzw. QueryPerformanceFrequency ist mein Problem gelöst...
Danke Gruber_Hans_12345!

@Grandalfus:
Echt gutes Tutorial!
Aber eine Variante für nen Timer hätte ich noch. Und zwar ist das eine Komination der Sleep Variante und der High Performance Variante. Das ist jetzt ein Beispiel, so wie ich es zur Zeit mache:

(Zuerst den großen Zeitabschnitt grob mit Sleep abwarten. Dann den Rest genau mit der HighPerformance-methode abwarten.)

Delphi-Quellcode:
QueryPerformanceCounter(a);
Restzeit := Zeit - (b-a)*1000 div f;
while RestZeit > 70 do begin
   Application.ProcessMessages;
   if abbruch then
      Exit;
   Sleep(50);
   QueryPerformanceCounter(b);
   Restzeit := Zeit - (b-a)*1000 div f;
end;
QueryPerformanceCounter(b);

while s > (b-a) do begin
   QueryPerformanceCounter(b);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz