Problem mit Frontbuffer

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

maikelmeyers

Betreff: Problem mit Frontbuffer

BeitragMo, Feb 21, 2005 11:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

bin Anfänger in BlitzBasic-Programmierung und hab schon das erste Problem mit BlitzPlus V1.11. Irgendwie funktioniert das Zeichnen von Grafiken direkt in den Frontbuffer nicht, selbst wenn ich explizit den Frontbuffer mit SETBUFFER FRONTBUFFER() aktiviere. Alles was ich an Grafiken zeichne befindet sich IMMER im Backbuffer und wird erst nach einem FLIP sichtbar. Weiß jemand woran das liegt?

Grüsse

BladeRunner

Moderator

BeitragMo, Feb 21, 2005 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo. Liegt an Bplus. Da hast du keinen Frontbuffer mehr zum Ansprechen.

EDIT: Habe mich hier vertan. Bplus initialisiert nur automatisch den Backbuffer. Embarassed
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
  • Zuletzt bearbeitet von BladeRunner am Mo, Feb 21, 2005 14:56, insgesamt einmal bearbeitet
 

lettorTrepuS

BeitragMo, Feb 21, 2005 12:30
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

maikelmeyers

BeitragMo, Feb 21, 2005 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das, wenn ich Graphics benutze? Das benutz ich doch schon.
Hier mal ein kleines Beispiel, welches bei mir NICHT funktioniert:

Code: [AUSKLAPPEN]
; Setup our constants
Const g_ScreenWidth=1024, g_ScreenHeight=768

; Call the BB "Graphics" routine to initialize DirectX
Graphics g_ScreenWidth, g_ScreenHeight

SetBuffer FrontBuffer()
Cls

While Not KeyHit(1)
   
   For zaehler = 1 To 10000
   x = Rnd(0, 1024)
   y = Rnd(0, 768)
   Plot x, y
   Next
      
Wend

; End of the program
End


Komischerweise steht in der online-Hilfe meiner BlitzPlus-Version nichts davon, dass der Frontbuffer nicht mehr angesprochen werden kann. Geht man aber auf die Webseite www.blitzbasic.com steht da unter Frontbuffer() Folgendes: This command is provided for backwards compatibility with Blitz Basic and Blitz 3d only. This command now returns the same as BackBuffer - you cannot render directly to the FrontBuffer. If converting to Blitz+, you will need to call Flip after you have drawn everything.

Na toll!

BladeRunner

Moderator

BeitragMo, Feb 21, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch nicht vertan. Ach menno, ich komm da immer durcheinander.
Kein wunder bei 39125 verschiedenen Blitzversionen Wink
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
 

lettorTrepuS

BeitragMo, Feb 21, 2005 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

maikelmeyers

BeitragMo, Feb 21, 2005 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht denk ich da jetz als Anfänger etwas falsch, aber nimm doch mal mein obiges Beispiel. Angenommen ich will, dass die Punkte sich langsam aufbauen. Wenn ich die Doublebuffering-Variante benutzen muss, muss ich jedesmal einen Punkt zeichnen, das Bild irgendwie anderweitig speichern, dann flippen, dann das gepeicherte Bild in den jetzigen Backbuffer kopieren, den nächsten Punkt zeichen usw. Das is doch irgendwie umständlich. Mit der Methode, direkt in den Frontbuffer zu schreiben und das Bild sozusagen zu übermalen ist doch wesentlich simpler und schneller.

BladeRunner

Moderator

BeitragMo, Feb 21, 2005 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Direktes Zeichnen in den Frontbuffer führt aber auch zu Flackern und Fehldarstellungen.
Daher ist es bei "Pixelweisem" Bildaufbau sinniger, immer alle Schritte zu wiederholen und dann zu flippen.
d.h. du musst nicht dein Bild "speichern" sondern du zeichnest es immer von vorne, nur jedesmal ein bissl mehr.
Es gibt da aber immer mehrere Alternativen, welche die Beste ist hängt ganz vom konkreten Fall ab.
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
 

lettorTrepuS

BeitragMo, Feb 21, 2005 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.
 

maikelmeyers

BeitragMo, Feb 21, 2005 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, aber alles neu aufbauen geht ja nich, da ich die Zufallsfunktion benutze und daher das Bild jedesmal anders aussehen würde.

So gehts wie ich das haben wollte, aber eben extrem langsam:

Code: [AUSKLAPPEN]
; Setup our constants
Const g_ScreenWidth=1024, g_ScreenHeight=768

; Call the BB "Graphics" routine to initialize DirectX
Graphics g_ScreenWidth, g_ScreenHeight

SetBuffer FrontBuffer()
Cls
Flip
Cls

   
For zaehler = 1 To 1000
x = Rnd(0, 1024)
y = Rnd(0, 768)
Plot x, y
Flip
Plot x, y
Next
   
      
While Not KeyHit(1) Wend

; End of the program
End


ohne dem Flip wäre das ganze bestimmt wesentlich schneller

Ebola33

BeitragDo, Feb 24, 2005 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutz einfach einen Imagebuffer den du bei jedem Schleifendurchlauf mit der entsprechenden Anzahl pixel vollmalst.
Den musst du dann nur am anfang der hauptschleife als bild anzeigen und fertig.
ansteckend... Wink
verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group