Problem mit Frontbuffer
Übersicht

maikelmeyersBetreff: Problem mit Frontbuffer |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo. Liegt an Bplus. Da hast du keinen Frontbuffer mehr zum Ansprechen.
EDIT: Habe mich hier vertan. Bplus initialisiert nur automatisch den Backbuffer. ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
maikelmeyers |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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! |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch nicht vertan. Ach menno, ich komm da immer durcheinander.
Kein wunder bei 39125 verschiedenen Blitzversionen ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
maikelmeyers |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger. | ||
maikelmeyers |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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... ![]() verstaubtes Projekt : http://www.mitglied.lycos.de/ebola33/ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group