Dat is idd echt een onzinverhaal ja

Je haalt 60 fps, en je hebt een 60Hz scherm dan heb je elke milliseconde 1 frame
Hoe kom je daar in hemelsnaam bij

Vanwaar die 1 milliseconde? 60 Hz voor een monitor betekent 60 refreshes van het beeld per seconde. Een zichtbaar frame duurt dus 1/60s = 16.67ms. De data van de frame zal niet instantaan van je videokaart naar de monitor verstuurd worden, dus ergens in die periode van 16.67ms zit een periode waarin het frame verstuurd wordt. Wat er gebeurt als je videokaart meer dan 60 beeldjes per seconde rendert is dat hij halverwege het versturen van het ene beeldje de interne buffer alweer overschrijft met de volgende. Aangezien de pixels doorgaans van links naar rechts, van boven naar beneden verstuurd worden, heeft dit als gevolg dat de onderste helft niet meer bij de bovenste helft hoort. Dit heet
tearing.
De framerate (die verder geheel los staat van de refresh rate) is wel van invloed op vertragingen in de gameplay. Als een game 30 frames per seconde eruit jast, dan duurt elke frame dus 33.33ms. Terwijl jij naar een beeld zit te kijken, is de game ondertussen de volgende frame al weer aan het renderen, dus daar zit sowieso al een vertraging van 33.333ms tussen in wat je ziet tov wat er daadwerkelijk gebeurt. Daarnaast is het zo dat de input ook eens per frame verwerkt wordt. Oftewel, als jij op een knopje drukt, duurt het gemiddeld een halve frame voordat die input verwerkt wordt, en daarna duurt het weer een heel frame voordat je het effect daarvan op het beeld ziet. Het nadeel van een lage framerate is dus vooral dat er een merkbare lag kan optreden, wat heel irritant speelt. Overigens is dit effect bij 30fps en doubleduffering nog nagenoeg niet merkbaar.
Echter, als je de tearing uit het begin van m'n verhaal wilt voorkomen, dan moet je "vsyncen". Dit betekent dat de videokaart pas een nieuw beeldje actief maakt nadat de vorige volledig verzonden is. Hierdoor krijg je dat frametijd altijd een veelvoud van de tijd van een enkel frame van de monitor inneemt. Oftewel, als je monitor 60Hz output, dan kun je 60fps, 30fps, 20fps, 15fps etc. draaien. Het probleem hiermee is dat je vaak nog een extra frame achter gaat lopen (je hebt immers een beeld dat momenteel getoond wordt, een beeld dat al klaar staat in de queue, en een beeld waar de game momenteel mee bezig is). En zeker in de situaties waarin een veelvoud van de frametijd
net niet gehaald wordt krijg je een stotterende framerate en een merkbare input lag, die heel storend is tijdens het gamen. Wat dat betreft speel ik liever een game die rock solid 30 draait, dan eentje die vaak 60 draait maar dat soms net niet haalt (waardoor hij terugvalt naar 30).
Een ander bijkomend effect is dat alle physics en bewegingen in de game afhankelijk zijn van de frametijd, terwijl dit eigenlijk niet juist is. Natuurlijk, als iets met 60 pixels per seconde over het scherm gaat, en je game loopt 60 fps, dan moet ieder object 1 pixel per frame worden opgeschoven, en als je game 30fps loopt moet dat 2 pixels per frame zijn. Het punt is, je weet als game niet hoe lang de huidige frame gaat duren. Je weet alleen hoe lang de vorige geduurd heeft. Als je steeds 60fps loopt ga je uit van een frametijd van 16.67ms, en beweeg je de objecten ook met die snelheid vooruit. Als er dan in eens een frame komt van 30fps (33.33ms), dan zal in dat frame het object nog steeds met 16.66ms vooruit zijn bewogen, terwijl het daadwerkelijke plaatje van dat frame veel te laat getoond wordt (en het object dus eigenlijk verder had moeten zijn op het moment dat jij het beeld ziet). En na die frame, als de framerate weer terugspringt naar 60, is het weer precies andersom - de objecten bewegen dan juist veel te weinig. Dit zorgt voor jerky movement, wat heel storend is in games die geen constante framerate halen.
[Reactie gewijzigd door .oisyn op vrijdag 30 oktober 2009 16:22]
Ooit van V-Sync en triple buffering gehoord? Geen Tearing met meer als 60fs! Moet je natuurlijk wel de juiste vorm van triple buffering gebruiken, anders voeg je alleen maar weer latency toe.
(page-flip triple buffering dus, géén render-ahead triple buffering)
Videokaart bouwt het nieuwe frame wisselend op in buffers A en B, terwijl de monitor bezig is met buffer C uit te lezen en op het scherm tevoorschijn te teoveren. Op het moment de monitor klaar is met buffer C uit te lezen (V-sync) wordt de laatst voltooide buffer (A of

naar buffer C gekopieerd, tijdens het kopieëren wordt de buffer die uitgelezen wordt niet gevuld met een nieuw frame. Op deze manier wordt tearing voorkomen, maar heb je wel het voordeel van een hogere framerate dan dat je monitor kan weergeven.
Tevens heeft triple buffering ook een voordeel bij lagere framerates als de refreshrate van de monitor, in gevallen waar V-Sync aan staat.
Practisch alle console spellen werken met V-Sync om tearing te voorkomen. Daarnaast onderteunde Nintendo al triple buffering bij de Gamecube (wat deze een klein fps voordeel gaf bij multi-platform spellen), deze generatie hebben alle drie de consoles ondersteuning voor triple buffering.
[Reactie gewijzigd door knirfie244 op vrijdag 30 oktober 2009 15:58]
Niet om het een of ander, maar triple buffering is al zo oud als de weg naar rome. Ik kon het op m'n oude Voodoo2 ook al aanzetten

Ja ik heb er wellis van gehoord (gebruik het met CoD4), tja theoretisch zal je vast gelijk hebben maar alle 3 de consoles voelen traag aan naast me pc, om overschokkerig beeld niet nog maar niet te praten.