Dumme Anfängerfragen zu Front- und Backbuffer
Übersicht

alteregoBetreff: Dumme Anfängerfragen zu Front- und Backbuffer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Rubber |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja...
aber der Front oder back buffer ist dann doch noch beschrieben... mfg Rubber |
||
alteregoBetreff: RE: Rubber |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
er beschreibt doch immer beide gleich...
mfg rubber |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein er beschreibt sie nur anfangs 1 mal und beide Unterschiedlich. | ||
Gruss Der Typ.
User posted image |
Rubber |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok...
stimmt... wollte er denn nicht jeden abwechselndbeschreiben??? mfg rubber |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein abwechselnd anzeigen. | ||
Gruss Der Typ.
User posted image |
Rubber |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann muss er sie halt jedes mal neu beschreiben...
BlitzBasic: [AUSKLAPPEN] Graphics 800,600 mfg Rubber |
||
alteregoBetreff: RE: Rubber |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
||
alteregoBetreff: RE: hectic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
Medabots1992 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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. | ||
alteregoBetreff: Backbuffer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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" ![]() |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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) |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group