{"id":300,"date":"2011-09-06T21:12:15","date_gmt":"2011-09-06T20:12:15","guid":{"rendered":"http:\/\/blog.my-gate.net\/2011\/09\/zeit-vs-frame-vs-pixel\/"},"modified":"2015-11-10T15:39:02","modified_gmt":"2015-11-10T13:39:02","slug":"zeit-vs-frame-vs-pixel","status":"publish","type":"post","link":"https:\/\/duerrenberger.dev\/journal\/2011\/09\/06\/zeit-vs-frame-vs-pixel\/","title":{"rendered":"Zeit vs Frame vs Pixel"},"content":{"rendered":"<p>Ein Entwurf des Beitrags liegt auch schon seit einiger Zeit auf meiner Festplatte und hat es nun doch endlich auch noch in die Freiheit des Internets geschafft!<\/p>\n<p>Wenn man Spiele programmiert sind die Begriffe wie Zeit, Frame und Pixel sehr wichtig, denn m\u00f6chte man eine Bewegung eines Objektes darstellen, sollte man diese Begriffe in der richtigen Reihenfolge zusammen bringen k\u00f6nnen, um z.B. die Geschwindigkeit fest zulegen.<\/p>\n<p>Hier ein bisschen Theorie \u00fcber einzelne Begriffe.   <br \/>Ein Frame entspricht einem vollen Bild, das an einem Bildschirm dargestellt wird. Dies geschieht aber nicht einmal in der Sekunde sondern normalerweise etwa sechzig Mal. Also hat man sechzig Frames pro Sekunde und \u2018Frame pro Sekunde\u2019 wird meist zu FPS zusammengefasst.    <br \/>Mit der 3D Technologie, oder umgekehrt, kommen nun wieder mehr Bildschirme mit einer Aktualisierungsrate von 120FPS auf den Markt. Ein durchschnittlicher Bildschirm zeigt jedoch \u2018nur\u2019 60FPS an, doch die FPS welche nun oft bei Spielen angegeben werden, hat nicht immer direkt etwas mit der Darstellung am Bildschirm zu tun, sondern sagt meist lediglich aus wie viele Bilder berechnet werden k\u00f6nnen pro Sekunde. So kann ein Spiel (wohl nicht ein 3D intensives Spiel) mit 2000FPS laufen, der Bildschirm stellt jedoch immer noch nur sechzig Bilder pro Sekunde dar. Mit 2000FPS sollte man unbedingt eine Frameratelimit setzten, da man die CPU bzw. GPU nur unn\u00f6tig belastet, denn obwohl eine hohe Framerate einen pr\u00e4zisere Berechnung von Objekte zu l\u00e4sst, so ist alles \u00fcber 120FPS wohl schlicht Wegs \u00fcbertrieben und unn\u00f6tig!<img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; margin: 20px auto; display: block; float: none; border-top: 0px; border-right: 0px\" title=\"TFP\" border=\"0\" alt=\"TFP\" src=\"\/wp-content\/uploads\/2011\/09\/TFP.png\" width=\"208\" height=\"208\" \/>Vielleicht gibt es Personen, welche einmal etwas von VSync geh\u00f6rt haben oder es in irgend einem Spielen aktivieren musste. VSync steht f\u00fcr \u2018<a href=\"http:\/\/de.wikipedia.org\/wiki\/Vertikale_Synchronisation\" target=\"_blank\">Vertical Synchronisation<\/a>\u2019 und bedeutet dass die Ausgabe von Frames immer sch\u00f6n wartet bis der Bildschirm wieder ein neues Bild zu zeichnen beginnt. Somit kann diese Option zu einem Bremsklotz f\u00fchren, je nach dem wie Spiellogik aufgebaut wurde, doch gewisse Bildschirme und Grafikkarte vertragen sich nicht so gut und w\u00fcrde dies nicht aktiviert werden, k\u00e4me es zu sogenanntem \u2018<a href=\"http:\/\/de.wikipedia.org\/wiki\/Tearing\" target=\"_blank\">Tearing<\/a>\u2019 (Horizontale Streifen). Einen interessanten Englischen Beitrag zu VSync und DirectX findet ihr auch auf Erik McClure\u2019s <a href=\"http:\/\/blackhole0173.blogspot.com\/2011\/09\/problem-of-vsync.html\" target=\"_blank\">Blog<\/a>.<\/p>\n<p>Obwohl FPS eine zentrale Rolle spielt, so w\u00fcrde sich doch keine Spielfigur so bewegen wie wir es gerne h\u00e4tten, w\u00fcrde man nicht bestimmte Geschwindigkeiten einhalten. Wie der Programmierer den Animationsapparat nun baut ist ihm \u00fcberlassen und trotzdem wird er sich einmal damit besch\u00e4ftigen m\u00fcssen mit welche Geschwindigkeit seine Objekte sich bewegen und daf\u00fcr gibt es dann die M\u00f6glichkeit das Ganze zu abstrahieren und \u2018nat\u00fcrliche\u2019 Einheiten wie m\/s zu verwenden, oder man kann eine direkte Einheit wie Pixel pro Sekunde.   <br \/>Nebst der Pixel pro Sekunde gibt es die \u2018Einheit\u2019 Pixel pro Frame, welche doch eigentlich auch ganz praktisch ist, doch obwohl man bei der Entwicklung mit einer einigermassen stabilen Framerate arbeitet, so ist Leistung einer anderen Grafikkarte um vieles h\u00f6her und anstatt die langsamen 100FPS produziert die andere Hardware 1000 Bilder pro Sekunde und l\u00e4sst das Objekt somit 10 Mal schneller bewegen.    <br \/>Pixel pro Sekunde bleibt somit dann konstant, egal was f\u00fcr Hardware das Spiel vorfindet.<\/p>\n<p>Hier nun noch einmal die Definition der einzelnen Variablen:<\/p>\n<ul>\n<li>FPS \u2013 F\/s \u2013 frames per second \u2013 Bild pro Sekunde \u2013 Bildwiederholung pro Sekunde <\/li>\n<li>PPF \u2013 p\/F \u2013 pixel per frame \u2013 Pixel pro Bild \u2013 relative Geschwindigkeit zum Bild <\/li>\n<li>PPS \u2013 p\/s \u2013 pixel per second \u2013 Pixel pro Sekunde \u2013 absolute Geschwindigkeit <\/li>\n<\/ul>\n<p>Berechnung der einzelnen Variablen (links P f\u00fcr pro\/per \u2013 rechts \/ f\u00fcr pro\/per)<\/p>\n<blockquote>\n<p>FPS = PPF \/ PPS&#160; \u2013&#160; F\/s = p\/F \/ p\/s      <br \/>PPF = PPS \/ FPS&#160; \u2013&#160; p\/F = p\/s \/ F\/s       <br \/>PPS = PPF \/ FPS&#160; \u2013&#160; p\/s = p\/F \/ F\/s<\/p>\n<\/blockquote>\n<h3>Fazit<\/h3>\n<ul>\n<li>Behaltet eure FPS im Sichtfeld.<\/li>\n<li>Bietet die VSync Option an, doch lasst sie standardm\u00e4ssig deaktiviert.<\/li>\n<li>Verwendet PPS oder eine Abstrahierung und nie PPF!<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ein Entwurf des Beitrags liegt auch schon seit einiger Zeit auf meiner Festplatte und hat es nun doch endlich auch noch in die Freiheit des Internets geschafft! Wenn man Spiele programmiert sind die Begriffe wie Zeit, Frame und Pixel sehr wichtig, denn m\u00f6chte man eine Bewegung eines Objektes darstellen, sollte man diese Begriffe in der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,17,5,14],"tags":[141,142,143,146,284,293,414],"class_list":["post-300","post","type-post","status-publish","format-standard","hentry","category-pc","category-games","category-linux","category-windows","tag-fps","tag-frame","tag-framrate","tag-games","tag-pixel","tag-programming","tag-zeit"],"_links":{"self":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/comments?post=300"}],"version-history":[{"count":1,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/300\/revisions"}],"predecessor-version":[{"id":750,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/300\/revisions\/750"}],"wp:attachment":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/media?parent=300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/categories?post=300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/tags?post=300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}