Dumme Anfängerfragen zu Front- und Backbuffer

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

alterego

Betreff: Dumme Anfängerfragen zu Front- und Backbuffer

BeitragSa, Dez 10, 2005 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Beschreibung zu den Buffern und Flip steht, dass der Frontbuffer immer direkt
die Grafikkartenanzeige ist und der Backbuffer nur im Speicher sei.
Mit Flip werden dann diese beiden Buffer vertauscht.

Nun stellt aber folgendes Programm immer beide Rechtecke dar, warum?

Graphics 800,600
SetBuffer BackBuffer()
Color 255,0,0:Rect 100,100,200,200,1
SetBuffer FrontBuffer()
Color 0,0,255:Rect 200,200,300,300,1

While True
If KeyHit(1)>0 Then End ; ESC
If KeyHit(57)>0 Then ; Space
VWait : Flip False
End If
Wend

Der Beschreibung nach sollten nach jeder Leertaste einmal das eine und dann das andere >Rechteck dargestellt werden?

Vielen Dank im Vorhinein für Eure nette Hilfe für einen Blitz3D-Neuling Smile
 

Rubber

BeitragSa, Dez 10, 2005 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
1. es gibt ne extra Anzeige für den BB-code...

BlitzBasic: [AUSKLAPPEN]
Print (\"zu bewundern hier\")


2. haste das mal in 2d gemacht??? (vom grundssatz her???)

3. bin mir nicht sicher, aber nach dem flip musst du nen buffer erts löschn, was mit


BlitzBasic: [AUSKLAPPEN]
Cls

geht...

mfg
Rubber

SoNenTyp

BeitragSa, Dez 10, 2005 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@Rubber

1. Jo stimmt ist aber bitte nur bei kleinen Codes wie diesem zu verwenden

2. Das ist doch 2d?

3. Nö Bei flip wird der Front- zum Backbuffer und umgekert.
Gruss Der Typ.

User posted image
 

Rubber

BeitragSa, Dez 10, 2005 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ja...

aber der Front oder back buffer ist dann doch noch beschrieben...

mfg
Rubber
 

alterego

Betreff: RE: Rubber

BeitragSa, Dez 10, 2005 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Hinweis mit dem BB-Code.
Ich verwende Blitz3D.
Der Hinweis mit dem CLS dient ja den Beispielen nach nur um eine vollständig gezeichnete Anzeige zu erhalten.
Mein Beispiel soll ja nur die beiden Buffer testen.

SoNenTyp

BeitragSa, Dez 10, 2005 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo Rubber das soll ja so sein. Die beiden Buffer sollen abwechselnd angezeigt werden. Aber irgendwie werden die beide auf einmal angezeigt. Oder es wurde beide beschrieben.
Gruss Der Typ.

User posted image
 

Rubber

BeitragSa, Dez 10, 2005 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
er beschreibt doch immer beide gleich...

mfg
rubber

SoNenTyp

BeitragSa, Dez 10, 2005 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein er beschreibt sie nur anfangs 1 mal und beide Unterschiedlich.
Gruss Der Typ.

User posted image
 

Rubber

BeitragSa, Dez 10, 2005 23:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ok...

stimmt...

wollte er denn nicht jeden abwechselndbeschreiben???

mfg
rubber

SoNenTyp

BeitragSa, Dez 10, 2005 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein abwechselnd anzeigen.
Gruss Der Typ.

User posted image
 

Rubber

BeitragSa, Dez 10, 2005 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
dann muss er sie halt jedes mal neu beschreiben...

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600 

Repeat

Cls
SetBuffer BackBuffer()

Color 255,0,0:
Rect 100,100,200,200,1

Delay 1000

Cls

SetBuffer FrontBuffer()

Color 0,0,255:
Rect 200,200,300,300,1

Delay 1000

Forever


mfg
Rubber
 

alterego

Betreff: RE: Rubber

BeitragSa, Dez 10, 2005 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Der eigentliche Grund meiner Frage ist, ob die Beschreibung der Buffer
und Flip Befehle nicht korrekt sind oder ob es ein Bug in Blitz3D ist.
Mehr soll es auch nicht sein.
Ich möchte die Buffer nicht löschen und neu beschreiben sondern einfach die beschriebene
Funktionalität testen, um diese bei Bedarf auch verwenden zu können.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Dez 10, 2005 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmm, also habe mal was ausprobiert...

Im Fenstermodus kopiert Flip den Backbuffer zum Frontbuffer. Dabei bleibt der Backbuffer erhalten...

Im Vollbildmodus tauscht Flip die beiden Buffer. Man hat dann also zwei Bildschirme zu Verfügung wenn kein Cls oder anderes 'löschende' Ereignis eintritt.
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
;Graphics 800,600,16,1
SetBuffer BackBuffer()

Color 255,0,0:Rect 100,100,200,200,1

Flip

Color 0,0,255:Rect 200,200,300,300,1
Color 255,255,255




While Not KeyHit(1)
 Rect MouseX()-4,MouseY()-4,9,9,1
 Delay 500
 Flip
Wend
End
 

alterego

Betreff: RE: hectic

BeitragSo, Dez 11, 2005 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast vollkommen recht, die Beschreibung trifft nur auf den Vollbildmodus zu.
Im Frenstermodus scheint es den Backbuffer gar nicht zu geben!

Das sollte aber doch eigentlich groß dokumentiert sein Sad
 

Medabots1992

BeitragSo, Dez 11, 2005 0:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe geglaubt, wenn man Flip einsetzt wird der gesamte Backbuffer auf den Frontbuffer geschrieben. Alles auf einmal. Also nicht getauscht sondern. Nur in den Frontbuffer geschrieben. Und mit cls löscht man den Frontbuffer. Wenn man denn Backbuffer auf den Frontbuffer geschrieben hat. Ist der Backbuffer noch da ist, aber der Frontbuffer geschlöscht ist nix mehr da. Also das was auf Frontbuffer ist kann auch im Backbuffer sein Laughing

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 11, 2005 5:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@Medabots, ich glaube früher mal gelesen zu haben, daß Bildschirmpuffer garnicht kopiert sondern immer nur geswitcht wurden. Also der Bildschirmlesepointer auf eine andere Zieladresse umgestellt wurde. Das würde den Rechner zumindest einiges an Arbeit ersparen wie man sich vorstellen kann. Das dies im Fenstermodus nicht geht, liegt wohl eher an der Sinnlosver... äh Windowsverwaltung. Da müsste ja Windows 'mal kurz' wegen einem Fenster in einem anderen Speicherbereich gehen. Und das Zeile pro Zeile... Also wird einfach kopiert.
 

alterego

Betreff: Backbuffer

BeitragSo, Dez 11, 2005 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also es scheint definitiv so zu sein, dass im Fenstermodus der Backbuffer automatisch in den
Frontbuffer kopiert wird oder dass der Backbuffer gar nicht existiert, sondern man immer in den Frontbuffer schreibt.

Das ist insoferne lustig, als jegliche Tutorials als auch die beigepackte Dokumentation etwas anderes sagen
und auch in Beispielprogrammen das Vorgehen immer im Fenstermodus beschrieben wird.

Vielleicht war es in einer vorhergehenden Blitz3D Version anders.

Sehr merkwürdig allerdings, dass solche Sachen nicht unter: "Besonders wichtig!" dokumentiert sind.

Im Forum hier war doch wohl eindeutig zu vernehmen, dass Blitz3D bestens dokumentiert, als auch beinahe bugfrei sei.
Die "raue Wirklichkeit" Smile sieht wohl anders aus!
 

BIG BUG

BeitragSo, Dez 11, 2005 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, für den Vollbildmodus gilt das ja.

Letztendlich ist es für die Programmierung aber eigentlich nicht relevant, da man normalerweise ja immer in den Backbuffer schreibt und diesen dann flippt.

Der Sinn des Backbuffers ist, daß erst alle Grafiken eingezeichnet werden und erst im zweiten Schritt auf einmal zur Anzeige gebracht werden. So werden flimmrige Grafiken und der "Schneeeffekt" vermieden.

Benötigst Du verschiedene Bildpuffer(z.B. bei einem Wormslike-Game mit zerstörbarer Landschaft), dann kannst Du hier stattdessen beliebig viele Imagebuffer() verwenden.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Dez 11, 2005 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
In meiner Dokumentation steht u.a...
Code: [AUSKLAPPEN]
Wird ein Grafikfenster nicht im Vollbild angezeigt, so übernimmt Windows das Pageflipping der Grafik von BACKBUFFER.

Also hat BB überhaupt keine Möglichkeit in das technische Geschehen des Backbuffers Einfluss zu nehmen. Wie bereits in meinem vorherigem Beitrag beschrieben, müßte ein Betriebssystem wie beispielsweise Windows den Frontbuffer auf einen anderen Speicherbereich umleiten (nur damit das Pagefliping innerhalb eines Backbuffer sein Namen recht wird). Das würde zählige Sprungmarken innerhalb des Aufbaus eines Bildes bedeuten. Diese Vorgehensweise währe dann wiederrum um ein vielfaches langsamer, da ein Speicher am schnellsten linear ausgelesen werden kann. Es ist also im Fenstermodus schneller das eine oder andere mal den Backbuffer zum Frontbuffer zu kopieren als Zeilenweise die Ausleseziele zu ändern. Bei Vollbild ist sicherlich das Fliping schneller, und das macht BB ja auch.

SoNenTyp

BeitragSo, Dez 11, 2005 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm tatsächlich das benutzen von Flip ist gar nicht nötig.

Und ich konnte auch nicht feststellen das das Programm irgendwo anhält um auf den nächsten Frame zu warten.
Das würde ja bedeuten man hätte die Vorteile des Trippelbufferings in dem man einfach nicht in den Vollbildmodus schaltet!?
Gruss Der Typ.

User posted image

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group