Backbuffer und Flip

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mull

Betreff: Backbuffer und Flip

BeitragSo, Jan 09, 2005 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit dem unterem Code blinkt bei mir der ganze Bildschrirm und es wird nur jeder 2.te Kreis angezeigt. Im Festermodus (Graphics 640,480,0, 2) geht der Code wie man sich das vorstellt.
Warum ?

Graphics 640,480,0,1
SetBuffer BackBuffer()
Line 0,0,639,349
WaitKey()
For I = 1 To 10
Oval 20 * I ,20 * I , 20,20
Flip
Delay(400)
Next
WaitKey
 

mull

BeitragSo, Jan 09, 2005 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
@hot-bit
Die primitive Antwort ist vielleicht besser in deinem privaten Umfeld aufgehoben, wo die Ausdrucksweise entsprechent verstanden und verarbeitet wird.

Programmieren ist seit 20 Jahren mein Hobby und da zähl ich mich nicht mehr zu den Anfängern, auch nicht zu den Profis.

Es ist bestimmt eine simple Sache, nur ich weiss halt nicht warum.
 

Dreamora

BeitragSo, Jan 09, 2005 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
pack nen CLS an den anfang der loop.

in 2d musst du immer

CLS

zeichnen

flip

wenn du double- oder tripplebuffering ( letzteres nur in Blitz+ möglich ) benutzt
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

mull

BeitragMo, Jan 10, 2005 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, nur das bis dahin gezeichnete ist bei CLS futsch.

Nach einem Flip hat der Backbuffer das Aktuelle Bild des Frontbuffers, daher wird nur jeder 2.te Kreis gezeichnet.
Abhilfe würde Setbuffer Fronttbuffer() schaffen.

Nur in Blitz+ funktioniert anscheinend der Setbuffer Frontbuffer() Befehl nicht mehr.

BladeRunner

Moderator

BeitragMo, Jan 10, 2005 0:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Exakt. wäre auch nicht sehr förderlich da du mit setbuffer Frontbuffer() das Doublebuffering untergraben würdest.

Die Lösung für dein Problem wäre es ... EDITED: die Fornext schleife mit einer durch einen Timer der alle xx millisecs anschlägt erhöhten Variable zu versehen, damit nach und nach das nächste Oval kommt.
Delay (ein recht "böser" Befehl.. ) wäre dann auch überflüssig.
Und wenn sich Hotte auch im Ton vergriffen hat muss ich ihm zustimmen: Die Frage wäre im Beginner wahrscheinlich besser aufgehoben, denn ob Erfahrung mit Coden hin oder her, das hier sind fehlende Grundlagen.
(meine 2 ct.)

EDIT : bin schon zu müd für den Krempel, hab zuerst Müll geschrieben.
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
 

hot-bit

Gast

BeitragMo, Jan 10, 2005 0:36
Antworten mit Zitat
Hoi.

Wollte dasselbe antworten, wie BladeRunner, aber das Forum war down...

Benütze die Online-Hilfe, da ist alles super erklärt.

Es mag ja sein, daß du fast so lange programmierst wie ich, aber das schützt dich nicht davor, dir die Befehle anzusehen, mit welchen du arbeiten möchtest.

Das hat jetzt nichts mit Anmache oder so zu tun, das ist einfach Fakt !

Toni

D2006

Administrator

BeitragMo, Jan 10, 2005 1:10
Antworten mit Zitat
Benutzer-Profile anzeigen
die "Lösung" für dein Problem ist folgendes:
Graphics 640,480,0,3

ist aber Top Secret! Wink
Steht nichtmal in der Onlinehilfe, was dieser Modus bedeutet.

Also:
normal werden Front- und Backbuffer (es sind auch in B+ zweierlei, obwohl die Variablen FrontBuffer() und BackBuffer() gleich sind) mit einander vertauscht. Also wenn du die Linie draufmalst und dann "flipst", dann ist die Linie im Frontbuffer. Jetzt malst du einen Kreis, flipst wieder und schwups
ist die Linie wieder im Backbuffer.

Bei Modus 3 allerdings (only B+):
hier wird der Backbuffer in den Frontbuffer hineinkopiert.
Das was du, wie ich vermute, als standart betrachtest.

...

Wie auch immer:
hör auf Dreamora! d.h. immer schön cls und neu zeichnen.

MfG
D2006

Ralf

BeitragMo, Jan 10, 2005 3:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

dafür braucht man nicht unbedingt BB+, das kann man mit allen BB-Versionen auch manuell machen.
Code: [AUSKLAPPEN]
Graphics 640,480,0,1
SetBuffer BackBuffer()
Line 0,0,639,349
WaitKey()
For I = 1 To 10
Oval 20 * I ,20 * I , 20,20
Flip
    CopyRect 0,0,640,480,0,0,FrontBuffer(),BackBuffer()
Delay(400)
Next
WaitKey


Ralf

D2006

Administrator

BeitragMo, Jan 10, 2005 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, nicht bei allen BB Versionen. Bei B+ geht das wiederum nicht,
da ja die Variablen Frontbuffer() und Backbuffer() den gleichen Wert haben (nämlich den des Backbuffers). Ist ja aber eigentlich auch egal.

MfG
 

mull

BeitragMo, Jan 10, 2005 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, genau das habe ich gesucht.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group