Warum Flackert mein Spiel?
Übersicht

black_hunterBetreff: Warum Flackert mein Spiel? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich habe ein spiel geschrieben, aber es flackert manchmal, wisst ihr vieleicht warum?, wie könnte man es verhindern? ich danke euch schonmal ![]() MFG Markus |
||
- Zuletzt bearbeitet von black_hunter am Di, Jan 10, 2006 12:49, insgesamt einmal bearbeitet
Antsan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dazu gibt es Backbuffering.
Das funktioniert ungefähr so: Alles was du tust wird auf dem sogenannten BackBuffer getan, also wird nicht angezeigt. Wenn dann alles getan wurde sorgst du dafür, dass das jetzt gezeichnete Zeugs gegen das gerade sichtbare ausgetauscht wird, das heißt alles im Backbuffer wird gegen den Frontbuffer (den sichtbaren) ausgetauscht. Das heißt allerdings auch, dass jetzt im Backbuffer das alte Bild ist und im Frontbuffer das neue. Deswegen muss der Backbuffer dann auch gelöscht werden. Das geschieht wie folgt: Mit " SetBuffer BackBuffer() " legst du fest, dass der Backbuffer verwendet wird. Mit " Flip " tauschst du am Ende dessen, was du tust, den Frontbuffer gegen den Backbuffer aus. Was du wahrscheinlich schon weißt: Mit "Cls" kannst du den Backbuffer dann löschen, denn jegliche Grafik wird auf dem Backbuffer berechnet. Wenn du wieder auf dem Frontzbuffer (warum auch immer) zeichen möchtest tauschst du das "BackBuffer()" im ersten der obigen Befehle einfach gegen ein "FrontBuffer()"aus. |
||
black_hunter |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich danke dir für die schnelle antwort,
ich benutze immer nur dieser eine befehl SetBuffer BackBuffer(), ich werde es mal ausprobieren, und danke nochmals ![]() markus |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
@Antsan: Fast richtig. Die Daten werden nicht zwischen Back- und Frontbuffer geswapt sondern die Speicheradressen werden getauscht. Andernfalls würde der ganze Blitvorgang viel zu lange dauern. @Topic: Möglicherweise hast du aber auch VSync ausgeschaltet. Dann kommt es manchmal zu Bildfehlern, da sich die Pufferinhalte überschneiden können. grüße |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
oder bau einfach mal zwischen deinen hauptschleifendurchläufen (ich denke, du hast eine hauptschleife, an deren ende geflippt wird) eine kleine pause einzubauen....is zwar wahrscheinlich nicht die eleganteste lösung dafür Delay zu verwenden, aber es funktioniert..... ![]() ![]() ![]() |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Antsan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das geht auch besser mit CreateTimer() und WaitTimer(). Aber ich glaube kaum, dass das Flackern damit was zu tun hat. | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
och, bei mir ist das so, ich habe aber auch nen lahmen pc(633 mhz)
wenn ich viele sachen auf den bildschirm male...... |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
schreib mal deinen code rein | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, ich habe jetzt auch geflimmer in meinem ersten 3d experiment.....
es huschen immer solche grünen punkte von unten nach oben durchs bild.... liegt das an meinem code( es werden nur 2 objecte, ein würfel und ein sprite gedreht und bewegt) oder an meinem pc???? |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn es auf dem Bildschirm flackert, versuchs Mal mit flip 1 / flip true anstatt von flip false / flip 0. Letzteres kann dazu führen, dass immer nur teile des Bildes aktualisiert werden. speziell bei langsameren systemen wirds dann unschön ... | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group