Eingabe Verwalten
-
Sers,
ich mal wieder...
Also, in meinem Programm will ich nur 25 FPS rendern, deshalb hab ich folgendes in die MainLoop eingebaut://wir sind in der ML time1 = GetTickCount(); ... GetInput(); Render(); ... do { time2=GetTickCount(); Sleep(3); } while(time2-time1 < 1000/25);
So, wenn ich aber jetzt Tastaturabfrage usw. in meine ML packe, ruckelt es immer,weil ja nur 25 mal abgefragt wird.
Habt ihr ne Ahnung wie ich das ändern kann?
-
Du baust nen Counter ein der nur alle x-Zeiten (also 25 mal inder Sekunde), seine Grenze erreicht und dann renderst du alles und setzt ihn auf 0;
Es ruckelt nur weil zwischen den Darstellungen dein Sleep() Aufruf alles verlangsamt und somit reagiert das Programm erst später auf deine Eingaben.
-
Kuldren schrieb:
Du baust nen Counter ein der nur alle x-Zeiten (also 25 mal inder Sekunde), seine Grenze erreicht und dann renderst du alles und setzt ihn auf 0;
Das musst ich mir auch erst zwei Mal durchlesen ums zu verstehen was du meinst
Kurze Erläuterung für den Threadersteller:
while (true) { // Mainloop checkInput(); if (esIstWiederZeitZuRendern) render(); update() }
In update() setzt du dann je nach Zeit das Flag esIstWiederZeitZuRendern auf true oder false.
::edit::
Btw, denk dran, dass der Windows Timer nicht genauer als 15ms ist. Für prezise Zeiten nimm den High Performance Counter.
-
Wie benutze ich den High-Performance-Timer?
-
Hier, wunderbar:
http://www.codeworx.org/cpp_tuts_1_3.php