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 buffering

    ich 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 bild

    das 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...


Anmelden zum Antworten