zeilen verschiebungen/vsync
-
hallo leute
ich schreib hier grad so ein kleines spiel (snake klon) in java als applet
hab da im internet ne seite gefunden wo unter anderem double buffering erklärt wurde
hauptseite
double bufferingich hab das mal umgesetzt und es klappt auch ganz gut
allerdings hab ich, wenn viele frames bei grossen(800x600) auflösungen gerendert werden, zeilenverschiebungen in meinem bilddas ist nicht nur hässlich sondern auch hinderlich beim spielen
http://s4.directupload.net/images/091228/t9pm998a.jpg
hier sieht man das ganz gut (die drei farbigen raster in de rmitte und das quadrat oben links ist ok, das ist normal, nur der grüne teil rechts ist falsch)was kann ich dagegen machen?
der double buffering quellcode ist das hier
private Image dbImage; private Graphics dbg; public void update(Graphics g) { if ( dbImage == null ) { dbImage = createImage(this.getSize().width, this.getSize().height); dbg = dbImage.getGraphics(); } dbg.setColor(getBackground()); dbg.fillRect(0, 0, this.getSize().width, this.getSize().height); dbg.setColor(getForeground()); paint(dbg); g.drawImage(dbImage, 0, 0, this); }
da wird halt die paint mthode aufgerufen und ind er zeichne ich alles, bzw rufe die funktionen die zeichnen auf
-
mh hab das ganze mal ohne die überschriebene update methode laufen lassen
in 90% de rzeit war alels so wies sein sollte, lief flüssig und ruckelfrei, keine zeilenverschiebungen oder fehlende bildschirmhälften(was ich eig alles erwartet hatte) nur hier und da mal war das ganze bild für 1-2 frames weg, stört zwar aber ist angenehmer als diese zeilenverschiebung(hab so etwa 20-25 frames wenn ichs spiele)
-
weiss keiner was?
ist nicht vsync das was sowas unterdrückt?
wie implementiert man sowas?
-
weiss hier echt gar keiner was?
warum nicht? fehlen irgendwelche infos?wie gesagt das problem tritt erst auf wenn die auflösung des hintergrundbildes (und dmait des gesamten applets) grösser wird, 800x600 oder so
wenns mehr oder weniger klein bleibt ist alels butterweich...