Sie benötigen einen geglätteten Durchschnitt, der einfachste Weg ist, die aktuelle Antwort zu nehmen (die Zeit, um das letzte Bild zu zeichnen) und kombinieren Sie es mit der vorherigen Antwort. Durch Einstellen des 0,9 / 0,1-Verhältnisses können Sie die Zeitkonstante ändern - so schnell reagiert die Zahl auf Änderungen. Ein größerer Bruchteil zugunsten der alten Antwort ergibt eine langsamere glattere Veränderung, ein großer Bruchteil zugunsten der neuen Antwort gibt einen schnelleren sich ändernden Wert. Offensichtlich müssen die beiden Faktoren hinzufügen, um eine beantwortet Sep 17 08 um 20:33 Aber, wie Sie darauf hinweisen, theres eine Menge von Variationen in der Zeit, es braucht, um ein einzelnes Bild zu machen, und aus einer Benutzeroberfläche Perspektive Aktualisierung der fps Wert an der Frame-Rate ist überhaupt nicht nutzbar (es sei denn, die Zahl ist sehr stabil). Was Sie wollen, ist wahrscheinlich ein gleitender Durchschnitt oder eine Art von Binning / Reset Zähler. Beispielsweise können Sie eine Warteschlangen-Datenstruktur pflegen, die die Rendering-Zeiten für jedes der letzten 30, 60, 100 oder What-Have-You-Frames hielt (Sie könnten es sogar so konzipieren, dass das Limit zur Laufzeit einstellbar war). Um eine anständige fps-Näherung zu bestimmen, können Sie die durchschnittlichen fps aus allen Renderzeiten in der Warteschlange bestimmen: Wenn Sie das Rendering eines neuen Frames beenden, geben Sie eine neue Renderzeit ein und löschen eine alte Renderzeit. Alternativ können Sie nur dann dequeue, wenn die Summe der Renderzeiten einen voreingestellten Wert überschritten hat (z. B. 1 Sekunde). Sie können den letzten fps-Wert und einen zuletzt aktualisierten Zeitstempel beibehalten, so dass Sie auslösen können, wann die fps-Abbildung aktualisiert werden soll, wenn Sie dies wünschen. Obwohl mit einem gleitenden Durchschnitt, wenn Sie konsistente Formatierung haben, würde das Drucken der momentanen durchschnittlichen fps auf jedem Frame wahrscheinlich ok sein. Eine andere Methode wäre, einen Rücksetzzähler zu haben. Pflegen Sie einen genauen Zeitstempel (Millisekunde), einen Bildzähler und einen fps-Wert. Wenn Sie das Rendering abgeschlossen haben, erhöhen Sie den Zähler. Wenn der Zähler einen voreingestellten Grenzwert erreicht hat (zB 100 Frames), oder wenn die Zeit seit dem Zeitstempel einen voreingestellten Wert überschritten hat (zB 1 Sekunde), berechnen Sie die fps: Setzen Sie dann den Zähler auf 0 zurück und setzen Sie den Zeitstempel auf aktuelle Uhrzeit. Es gibt mindestens zwei Möglichkeiten, es zu tun: Die erste ist die eine andere haben hier vor mir erwähnt. Ich denke sein die einfachste und bevorzugte Weise. Sie müssen nur verfolgen, wie viele Frames Sie timestart gerendert haben: die Zeit seit dem Beginn der Zählung timenow: die aktuelle Zeit Die Berechnung der fps ist in diesem Fall so einfach wie die Auswertung dieser Formel: FPS cn / (timenow - timestart) . Dann gibt es die uber cool Art und Weise können Sie gerne einen Tag zu verwenden: Lets sagen, Sie haben i Frames zu prüfen. Ich benutze diese Schreibweise: f0, f1. Fi-1, um zu beschreiben, wie lange es dauerte, um Frame 0, Frame 1. Frame (i-1) zu rendern. Dann, mathematische Definition von fps nach i Frames wäre Und die gleiche Formel aber nur unter Berücksichtigung i-1 Frames. Nun besteht der Trick darin, die rechte Seite der Formel (1) so zu modifizieren, daß sie die rechte Seite der Formel (2) enthält und sie für ihre linke Seite ersetzt. Wie so (sollten Sie es klarer sehen, wenn Sie es auf ein Papier schreiben): Also nach dieser Formel (meine Mathematik Ableitung Geschick sind ein bisschen rostig aber), um die neuen fps zu berechnen müssen Sie wissen, die fps aus dem vorherigen Frame , Die Dauer, die zum Rendern des letzten Frames und der Anzahl der gerenderten Frames benötigt wurde. Dies könnte Overkill für die meisten Menschen, das ist, warum ich es nicht gepostet hatte, wenn ich es implementiert. Aber es ist sehr robust und flexibel. Es speichert eine Warteschlange mit den letzten Frame-Zeiten, so kann es genau berechnen einen durchschnittlichen FPS-Wert viel besser als nur den letzten Frame in Erwägung ziehen. Es erlaubt Ihnen auch, einen Rahmen zu ignorieren, wenn Sie etwas tun, dass Sie wissen, wird künstlich verschrauben, dass Frames Zeit. Darüber hinaus können Sie die Anzahl der Frames zu ändern, um in der Warteschlange zu speichern, wie es läuft, so können Sie es testen, on the fly, was der beste Wert für Sie ist. Beantwortet Mai 23 13 am 19:41 Gute Antworten hier. Wie Sie es implementieren, hängt davon ab, wofür Sie es brauchen. Ich bevorzuge den laufenden Durchschnitt ein selbst Zeit Zeit 0.9 lastframe 0.1 durch den Kerl oben. Aber ich persönlich gerne meine durchschnittlich stärker zu neueren Daten Gewicht, weil in einem Spiel ist es SPIKES, die am härtesten zu Squash und damit von Interesse für mich sind. Also ich würde etwas mehr wie ein .7 verwenden. 3 Split wird ein Spike zeigen, um viel schneller (obwohl sein Effekt wird Drop off-Bildschirm schneller als auch unten sehen) Wenn Ihr Fokus auf RENDERING Zeit ist, dann die .9.1 Split Funktioniert ziemlich schön b / c es neigen dazu, mehr glatt. Obwohl für Gameplay / AI / Physik Spikes sind viel mehr ein Anliegen als das wird in der Regel, was macht Ihr Spiel aussehen choppy (was oft schlechter als eine niedrige Framerate Annahme waren nicht Tauchen unter 20 fps) Also, was ich tun würde, ist auch Fügen Sie etwas wie folgt: (Fülle in 3.0f mit welcher Größe Sie finden, um eine unannehmbare Spitze zu sein) Dies wird Sie finden und damit lösen FPS Fragen das Ende des Rahmens sie passieren. Beantwortet November 13, 2008 um 22:56 Uhr Ich mag die Zeit 0,9 lastframe 0,1 durchschnittliche Berechnung, die das Display wechselt reibungslos. Ndash Fabien Quatravaux Sie konnten einen Zähler halten, ihn inkrementieren, nachdem jeder Rahmen gerendert wurde, dann setzen Sie den Zähler zurück, wenn Sie auf einer neuen Sekunde sind (das Speichern des vorherigen Wertes als die letzten Sekunden der übertragenen Rahmen) In ( C like) Pseudocode diese beiden sind, was ich in industriellen Bildverarbeitung Anwendungen, die zu verarbeiten hatte Bilder aus einer Reihe von extern getriggerten Kameras. Variationen der Bildrate hatten eine andere Quelle (langsamer oder schneller Produktion auf dem Band), aber das Problem ist das gleiche. (Ich nehme an, dass Sie einen einfachen timer. peek () - Aufruf haben, der Ihnen etwas wie die nr von msec (nsec) seit dem Anwendungsstart oder dem letzten Aufruf gibt) Lösung 1: schnell aber nicht jedes Frame aktualisiert Solution 2: Erfordert mehr Speicher und CPU geantwortet Antwort # 3 am: Mai 13, 2010, 07:12:39 am »Es ist viel besser als mit einer großen Anzahl von alten Framerates ist nur so etwas wie dies zu tun: Diese Methode verwendet weit weniger Speicher, erfordert weit weniger Code und legt mehr Wert auf die jüngsten Framerate als alte Framerate, während noch Glättung der Auswirkungen der plötzlichen Framerate Veränderungen. Beantwortet Ihre Antwort 2016 Stack Exchange, IncAd Blocker Interferenz erkannt Wikia ist eine frei zu verwendende Website, die Geld aus Werbung macht. Wir haben eine modifizierte Erfahrung für Zuschauer mit Anzeigenblockern Wikia ist nicht zugänglich, wenn Sie weitere Änderungen vorgenommen haben. Entfernen Sie die benutzerdefinierte Anzeigenblockerregel und die Seite wird wie erwartet geladen. 328fps ist 100m / s, und ein 0,2 g Bb reisen mit dieser Geschwindigkeit besitzen die Energie von genau 1 Joule. Energie (in Joule) 1/2 Massengeschwindigkeit2 FPS ist die häufigste Methode, die Geschwindigkeit einer Airsoft-Pistole zu messen. Die FPS auf Webseiten, die Airsoft-Pistolen aufgeführt ist die FPS mit einem Standard-0,2 g bb. Höhere Bbs verringern den FPS, erhöhen aber die kinetische Energie, die der Bb im Flug hat, wodurch die Schlagkraft und Genauigkeit erhöht wird. Es gibt keine bekannte sichere Formel, wie FPS durch BB Gewicht bewirkt wird, so muss es einfach in jeder Pistole getestet werden. FPS wird durch Chronographen, die ähnlich wie eine Polizei Offiziere Radar-Pistolen, in der Weise, dass sie die Geschwindigkeit eines Objekts an ihm vorbeiziehen gemessen. Diese können für so niedrig wie ein sechzig Dollar gekauft werden. Vergleich: Edit Im Frühjahr Pistolen, FPS selten mehr als 328 FPS, und kann so niedrig wie 100 FPS. Dieses ist mit .12 Gramm BBs. Mit 0,20 Gramm BBs wird die FPS selten 270 FPS übersteigen. Beachten Sie, dass FPS Spring Rifles neigen dazu, eine viel höhere FPS im Vergleich zu Frühjahrspistolen haben. Ein Federgewehr (oder Schrotflinte) ist praktisch nutzlos mit niedrigen FPS, so viele Spieler aktualisieren ihre Gewehre auf 450 FPS und darüber hinaus haben. Die FPS Reihe von AEGs umfasst die Federpistolen und geht weit darüber hinaus. Mit .12 Gramm BBs kann ein Bereich von 150-500 FPS gesehen werden (100-430 mit 0,20 g). FPS über 400 ist ungewöhnlich für Gebrauch, da sie möglicherweise nicht auf den meisten Feldern legal sind. Green Gas und CO2 Waffen variieren in FPS je nach Außentemperatur. Green Gas Pistolen neigen dazu, weniger FPS als CO2-Pistolen haben, obwohl es mehrere Green Gas Gewehre mit bemerkenswert hohen FPS-Ratings (über 500). Ein Green Gas Pistolen FPS in der Regel nicht mehr als 350, während CO2-Pistolen im Allgemeinen nicht unter 350 gehen. Dies ist ein Grund, warum Green Gas Waffen sind in CQB begünstigt. FPS auf Federgewehren und AEGs können hauptsächlich durch die Änderung der Feder eingestellt werden. Die Federkraft wird in Metern pro Sekunde gemessen. Gemeinsame Federn sind M100 und M120 (400 FPS mit jeweils 20s). UK FPS Limits Edit Im Vereinigten Königreich beträgt die Standard-FPS-Grenze für ein AEG - oder GBB-Gewehr 350 fps mit Scharfschützen, die bei 500 fps mit einem minimalen Eingriffsbereich von etwa 25 Metern ankommen. Diese variieren von Ort zu Ort, aber dies ist die allgemeine Faustregel. US FPS Limits Edit Abhängig vom Feld. Allerdings haben die meisten Outdoor-Felder eine FPS-Limit von 400 FPS, und drinnen wird die Grenze werden 350 FPS. Im Außenspiel kann diese Grenze für Schraubenwirbeln variieren. Beachten Sie, dass FPS mit 0,20 Gramm gemessen wird. Mit schwereren BBs zu vermitteln eine niedrigere FPS bekannt als Betrug der Chrono, und ist sehr schimpflich. Airsoft ist ein Spiel der Ehrlichkeit. Sei ehrlich.
No comments:
Post a Comment