Buffer Fehler?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

jeykey

Betreff: Buffer Fehler?

BeitragFr, März 05, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgendes Problem:

Ich schreibe momentan an einen Spiel, bei dem der Bildschirm nicht bei jeden Schleifendurchlauf durch "Cls" gelöscht und gezeichnet wird sondern nur ein kleiner Teil neu darauf gezeichnet wird.

Im Fenstermodus funktioniert das alles perfekt, doch sobald man in den Vollbildmodus schaltet, gibt es bei einigen Auflösungen, vor allen auf meinen MacBook und unter meinen Linux (OpenSuse) folgenden Fehler:

Irgentwie wird bei jeden Flip nicht der gleiche BackBuffer angezeigt, ich habe das Gefühl das es zwei BackBuffer gibt die sich immer abwechseln. Um das zu demonstrieren hab ich folgendes Beispielprogramm geschrieben:

Code: [AUSKLAPPEN]
SuperStrict

SetGraphicsDriver GLMax2DDriver()
Graphics 1920, 1080, 24, 60

DrawRect(0, 0, 200, 200)' Erstes Rechteck zeichnen
Flip' Anzeigen
WaitKey
DrawRect(200, 200, 200, 200)' Zweites Rechteck zeichnen
Flip' Anzeigen
' Hier passiert der Fehler:
' Das erste Rechteck verschwindet!
WaitKey
Flip
' Und nun taucht es wieder auf!
WaitKey
End


Die Auflösung (1920*1080) kann natürlich geändert werden, es ist blos eine der Auflösungen bei welcher der Fehler bei mir auftritt.

Wie gesagt, nach meiner Erfahrung taucht der Fehler nur im Vollbildmodus auf. Allerdings auch nicht bei jeder Auflösung...
Hatte jemand schon mal ein ähnliches Problem?

jeykey

Xaymar

ehemals "Cgamer"

BeitragFr, März 05, 2010 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
bei Flip wird zwischen Front und Backbuffer gewechselt. Daher diese "2 Backbuffer". ist also kein fehler.
Dass es im Fenstermodus geht, liegt daran, dass, glaube ich, auf betriebssystemen dann das buffern vom system übernommen wird.
Warbseite
 

jeykey

BeitragFr, März 05, 2010 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es unter BlitzMax auch die Möglichkeit direkt in den FrontBuffer zu schreiben oder den Austausch der beiden Buffer zu verhindern?
Zu meinen Spiel:

Ich schreibe ein ähnliches Spiel wie IpCurve:
user posted image

Mit diesen Buffer "Fehler" macht das echt keinen Spaß mehr, es flimmert das ganze Bild xD...

Xaymar

ehemals "Cgamer"

BeitragFr, März 05, 2010 22:12
Antworten mit Zitat
Benutzer-Profile anzeigen
es ist besser beide buffer zu verwenden:)

BlitzMax: [AUSKLAPPEN]
Repeat
Cls
'zeichnen
Flip 0
Forever


Dadurch schließt man eventuelle buffer fehler aus. nicht, dass man auf einmal im backbuffer zeichnet und keiner siehts:)
Warbseite

BladeRunner

Moderator

BeitragFr, März 05, 2010 22:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch dazu gibt es Systeme die triplebuffern. Von daher würde ich dir raten einfach imer alles neu zu zeichnen. Sollte eigentlich im Regelfall die Performance nicht zu arg belasten.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

jeykey

BeitragFr, März 05, 2010 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
An die Möglichkeit hab ich auch schon gedacht, ich bevorzuge meistens die einfachste bzw. schnellste Variante, aber so wie es auschaut gibt es wohl keine Alternative^^

BladeRunner

Moderator

BeitragFr, März 05, 2010 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Das was Du vorhattest war zu Zeiten des C64 die effektive und schnelle Variante. Heutzutage kaufst du dir nur Probleme wenn Du die Architektur moderner Hardware zu umgehen versuchst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group