250 pixel pro sekunde vsync stört
-
Ich habe ein Objekt was sich bis zu 250 Pixel pro Sekunde bewegen kann. Das sieht natürlich sehr rucklig aus bei eingeschaltetem Vsync, sobald man die Bildwiederholrate überschreitet. Deshalb wollte ich den VSync ausschalten, weiß jemand wie bzw. ob das geht. Benutzte SDL, Win2000.
-
kannst du eventuell im treiber machen, wird aber nicht viel besser aussehen glaube ich mal
rapso->greets();
-
Was sollte das Ausschalten denn für einen Vorteil bringen?
-
Dann bräuchtest Du schon einen Bildschirm und eine Grafikkarte, die 250 Hz unterstützen.
-
Also, ich dachte mir das folgendermaßen. Mein Objekt bewegt sich 250 Pixel/Sekunde. Macht bei einem VSync von 75 -> 250/75 gleich circa 3.3 Pixel pro dargestelltes Bild, was man alles ruckelig erkennen kann. SChalte ich diesen nun aus, läuft mein Spiel mit der momentanen Framerate (ca. 1000fps) macht weniger als 1 Pixel pro Bild, was dann jawohl nicht mehr als Ruckeln erkennbar sein sollte. Ist daran was verkehrt, kann ja gut sein.
Ich versuche schon seit geraumer Zeit das ruckeln wegzubekommen, probiere mich gerade an einem kleinen Autorennspiel, was eine Strecke von nur einem Bildschirm (1024*768) hat und die Autos darauf bis zu 250 Pix schnell werden können. Wenn ich z. Bsp. das Doublebuffering bei der SDL abschalte ruckelts nicht mehr, allerdings flimmert dann mein Auto.
-
Wie realsiert man sowas den sonst, es gibt doch sicherlich ne Menge Spiele, bei denen sich die Objekte schneller als 1 pixel pro frame bewegen und bei denen man kein ruckeln sieht. Vielleicht liegts ja auch an der SDL? Oder daran, das ich ein Notebook habe?
-
Wenn dein Monitor z.B. auf nur 75 Hz eingestellt ist siehst du immer nur 75 Bilder pro sec. (egal ob mit oder ohne vsync)
aber wenn du mit antialiasing arbeitest kannst du ja im Prinzip auch Bruchteile von Pixeln bewegen (von dem wie es nachher aussieht)
-
Also wenn du dein Monitor mit k Hz läuft, dann wird jede einzelne Zeile des Bildes jeweils nur mit k fps animiert sein, egal wie hoch deine (ach so tolle) fps ist. Liegt einfach daran, das diese Zeile nunmal nicht öfter gezeigt wird, wäre ja auch unnötig, da man so viele Bilder nicht erkennen kann.
Das einzige was du damit erreichen kannst: verschiedene Zeilen deiner Grafik zu unterschiedlichen Zeiten animieren animieren. Das bedeutet, wenn du z.B. einen Rechteck zeichnest, das die Höhe des Bildschirms hat und sich von links nach rechts bewegt, und das 400x pro Sekunde, während der Monitor nur 100 Hz hat:+------------------------+ I **** I \ I **** I } 1.Frame I_______****_____________I / I **** I I **** I I________****____________I . I **** I . I **** I . I_________****___________I I **** I \ I **** I } 4. Frame I **** I / +------------------------+
Es werden vier Frames erzeugt, während der Rasterstrahl einmal über das gesamte Bild läuft. Es werden vier Bilder angezeigt, jedoch jeweils nur ein Viertel von jedem. Die waagerechten Linien sind natürlich nicht wirklich zu sehen, man kann sie nur bei schnellen Bewegungen als "Schnitt" durch das Bild wahrnehmen. Solange eine Grafik komplett in einem der "Streifen" liegt, sieht sie genauso aus wie mit k fps animiert.