Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.02.2007, 16:14

Flackerfreies Zeichnen mit der SDL

Moin,

ich habe mich jetzt ein wenig mit der SDL auseinandergesetzt. Ich komme auch ganz gut damit zurecht allerdings habe ich ein Problem. Wenn ich bewegungen zeichnen will flackert immer alles. Mir ist auch klar woran es liegt, der Bildschirm kann die informationen nicht schnell genug darstellen.
Nun suche ich aber eine Lösung für dieses Problem. Andere Projekte wie zum beispiel OpenTTD oder Battle for Wesnoth flackern ja auch nicht die ganze zeit. Wie kriege ich es also hin flackerfrei zu zeichnen?

Als erstes Projekt habe ich mit vorgenommen diese Spiel nachzuprogrammieren. Immer wieder den ganze bildschirm neuzuziechnen ist zu aufwendig. Das ging mir ziemlich schnell auf. Dann ging ich dazu über das gezeichnete quadrat zu löschen (SDL_UpdateRect) und per clipping neuzuzeichnen. Wenn ich nur mein Cursor Quadrat simuliere ist das auch kein problem aber sobald ich ein paar feind-quadrate einbaue die duch den bildschirm fliegen flackert das ganze bild und eine flüssige bewegung bekomme ich erst recht nicht hin. Ich habe mir auch schon überlegt die quadrate immer wieder auszuschneiden und an der nächsten position wieder einzufügen aber dann kopiere ich bei berührung teile des anderen quadrats mit.
Also könnt ihr mir sagen wie ich den Bildschirm so "professionell" beschreibe, verwalte und aktuallisiere das es nicht flackert?

Als zusätzliches problem habe ich noch die tatsache das double-buffering nur bei SDL_Flip funktioniert und man somit das neuzeichnen der kreise zusätzlich zum flackern life mitverfolgen kann.

Vielen Dank und schönen Gruß, Prophet

PS: Ich verwende die SDL bibliothek da sie auf den meisten plattformen verfügbar ist und angeblich auch ziemlich schnell ist. Ich habe in anderen Foren schon zu hören bekommen das ich doch lieber GDI oder DirectX verwenden solle. Ich möchte die SDL verwenden!

Edit: Freue mich natürlich auch über links und tutorials die in dieser hinsicht weiterhelfen :)

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

2

05.02.2007, 19:41

Ganz einfach Doublebuffering aktivieren.
Bin mir nicht sicher aber ich glaub es ist beim dritten Parameter von SDL_SetVideoMode. Dort einfach noch "| SDL_DOUBLEBUF" angeben.

EDIT: Ja ich hab scheinbar Recht: http://gpwiki.org/index.php/C:Displaying_a_Bitmap_With_SDL

3

05.02.2007, 23:14

Vielen dank für deine Antwort! Es hat funktioniert!

Werbeanzeige