Linux-framebuffer-Grafik und VSync

Mache ich ein Spiel in C, das funktioniert auf dem linux-framebuffer. Bisher habe ich eine rot 100x100 Quadrat, das bewegt sich im tandem mit der Maus, ebenso wie ein Zeiger. Ich habe double buffering implementiert und es funktioniert einwandfrei (der Platz nicht flackert). Das problem ist, es ist ziemlich viel reißen geschieht horizontal. Was ich damit meine, ist, wenn das Quadrat verschiebt sich auf der x-Achse, es ist wie es ist horizontal geteilt und ein Teil der es Fortschritte slithgly mehr als die anderen. Diese "rip" langsam ausbreitet, von oben nach unten auf den Platz, wenn ich halten Sie es bewegen.

Ich glaube, dass es geschieht, weil die hardware liest den framebuffer während der moment, als ich die Kopie der Doppel-Puffer in die main-Puffer.

Habe ich versucht um das problem zu bekämpfen mit der FBIO_WAITFORVSYNC ioctl, aber kein Erfolg.

Irgendwelche Ideen, wie ich tun konnte, VSync auf den framebuffer? Bitte fügen Sie Details zu Ihren Erklärungen, wie dies das erste mal, dass ich bin, solch Zeug auf ein Linux-basiertes OS, also kann ich nicht verstehen, sonst.

Hier ist mein code: http://pastebin.com/KJ4iaVEL

  • Welche video-hardware verwenden Sie? Linux hat tearing-Probleme mit Sandy Bridge Intel-Grafik, zum Beispiel. Bitte klären Sie.
  • Ich habe eine Nvidia 7800 GTX, sorry fürs nicht erwähnen, dass. Es ist kein tearing bei normaler Nutzung (als ich z.B. das verschieben von Fenstern um in X).
InformationsquelleAutor | 2012-12-16
Schreibe einen Kommentar