Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 08, 2025 21:02

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Sep 10, 2009 16:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 04, 2008 23:15
Beiträge: 39
Wohnort: Oberösterreich
Programmiersprache: ObjPas, C, DivASM
Zitat:
Das komische ist nur, dass wenn ich das vSync aus mach und das Game mit 100% läuft meine DeltaTime manchmal 0 ist, aber das Spiel läuft trotzdem normal weiter, obwohl ich alle Bewegungen von der DeltaTime abhängig gemacht hab. oO

Bei hohen Frameraten ist das menschliche Auge zu langsam, um erkennen zu können das sich zwischen zwei Frames die Bewegung nicht geändert hat.

Ich benutzte die Funktion "QueryPerfomanceCounter" und habe eine DualCore CPU. Probleme hatte ich bis jetzt aber noch nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 11, 2009 09:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
dj3hut1: Die Methode ist dadurch natürlich nicht so anfällig wie GetTickCount alleine. Deine Methode ist da sogar recht genau. Die systembedingte "Schwäche" find ich schon recht wichtig. Ich kenne mich mit C++ jetzt nicht so gut aus. queue ist eine verkettete Liste, oder? Nur rein aus interesse.

Bergmann89: DeltaTime von 0 ist in sofern nicht schlimm, weil dann immer mal wieder Bilder dargestellt werden, die sich nicht verändert haben. Wenn sich also jedes 2te Bild nicht verändert, dann ändert sich aber trotzdem jedes zweite Bild. Sofern das alles über der Monitorfrequenz liegt ist das kein Problem. Außer, dass die anzeigte FPS nicht die wirklich sichtbare fps wiederspielgelt. Was aber über 60 fps sowieso nicht der Fall ist.

humflo hat geschrieben:
Ich benutzte die Funktion "QueryPerfomanceCounter" und habe eine DualCore CPU. Probleme hatte ich bis jetzt aber noch nicht.

Ich hatte vor einiger Zeit bei mir auch mal bewusst auf dieses Programm von AMD verzichtet und ein paar Tests gestartet. Ich konnte solche Probleme auch nicht mehr feststellen. Von daher vermute ich, dass eher nur die früheren Mehrkernsysteme davon betroffen sind. Wobei ich auch nicht weiß wie es bei MehrCPU Systemen aussieht. Aber die sind im privaten Sektor eher gar nicht mehr verbreitet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 11, 2009 15:54 
Offline
DGL Member

Registriert: Sa Aug 09, 2008 09:07
Beiträge: 112
Ich hab gerade in Java eine sehr coole Funktion gefunden. System.nanoTime();
Hier ein kleines Beispiel:

Code:
  1. public class TimeTest {
  2.    
  3.     public static void main(String[] args) {
  4.         long start = System.nanoTime();
  5.         long end = System.nanoTime();
  6.        
  7.         System.out.println(end - start);
  8.     }
  9.    
  10. }


Bei mir kam 1816 raus was davon zeugt dass es sehr genau ist :D.
Für die dies nicht wissen eine Nanosekunde entschpricht einem milliardstel einer Sekunde.
Und einem millionstel einer Millisekunde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Sep 11, 2009 17:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

jetzt is bloß die Frage wie das mit Delphi geht, und ob es nich das gleiche wie QueryPerformanceCounter ist...
Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var start, ende, freq: Int64;
  3. begin
  4.   QueryPerformanceFrequency(freq);
  5.   QueryPerformanceCounter(start);
  6.   QueryPerformanceCounter(ende);
  7.   ShowMessage(FloatToStr((ende-start)/freq*1000000000)); //1396,822 ns
  8. end;

ich denke am Ende is das genau das selbe, bloß mit nem anderen Namen...

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 12, 2009 10:27 
Offline
DGL Member

Registriert: Sa Aug 09, 2008 09:07
Beiträge: 112
Die einzige Frage die ich mir noch stelle ist ob das ganze auch noch funktioniert wenn du eine sleep zwischenstellst.
Der Counter ließt ja einfach nur die Takte aus dem TSC. Bei einem sleep hat jetzt aber der Prozessor nichts zu tun und wechselt vermutlich auch den zu verarbeitenden Prozess. Und bei so einen Interrupt wandern die Register doch auf den Stack.

Kannst du das einmal testen?
Würde mich nur interessieren ob das funktioniert und ich hab leider nicht die Möglichkeit das zu testen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 12, 2009 10:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
@Andreas: Ja, das funktioniert (bei mir) richtig, eben selber getestet. Microsoft selber empfiehlt ja QPC als "High performance counter" und nicht als eine Art CPU-Taktzähler. Umgekehrt bedeutet das aber auch, dass es vom Mainboard/BIOS/etc. abhängt, was für Taktgeber benutzt werden und was für Frequenzen dann dabei tatsächlich verwendet werden.

Ich hab aber eben auch noch die Frequenz nachgeschaut, die bei mir "nur" etwa 3,5 MHz Auflösung hat, also keine Nanosekunden messen wird. (Intel Q9300)

Das Problem mit AMD Dualcores wurde mW mit dem Treiber größtenteils gefixt und bestand dort auch "nur" wegen Bugs mit dem BIOS/HAL.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Sep 12, 2009 10:57 
Offline
DGL Member

Registriert: Sa Aug 09, 2008 09:07
Beiträge: 112
Danke fürs Testen!

Ich werd schaun was ich im Internet noch so darüber finde.
Vielleicht bekomm ich ja herraus wie der QPC/QPF funktioniert.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]