Backbuffer()-"Funktion" ersetzen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Christoph

Betreff: Backbuffer()-"Funktion" ersetzen

BeitragSa, Apr 07, 2007 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Backbuffer() ist im Grunde ja nichts weiter als eine Funktion, die eine Zahl zurückliefert. Bei mir liefert Backbuffer() die Zahl 11578080.

1. 11578080 müsste eigentlich etwas schneller sein als Backbuffer(), oder?
2. Ist diese Zahl immer gleich? Oder ist sie von PC zu PC verschieden?
  • Zuletzt bearbeitet von Christoph am Sa, Apr 07, 2007 12:53, insgesamt einmal bearbeitet

Holzchopf

Meisterpacker

BeitragSa, Apr 07, 2007 12:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum ersten 1. : Ja, wärs eigentlich.
Zum zweiten 1. : 4020792 (das liefert die Funktion bei mir), sollte deine Frage wohl beantworten Rolling Eyes

Edit: Na toll, jetzt hast du die beiden 1. noch korrigiert Mad
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
  • Zuletzt bearbeitet von Holzchopf am Sa, Apr 07, 2007 12:54, insgesamt einmal bearbeitet

Christoph

BeitragSa, Apr 07, 2007 12:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dann hat sich das wohl erledigt, danke Wink
 

Dreamora

BeitragSa, Apr 07, 2007 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Vor allem: Der Backbuffer ändert nach jedem Flip. Wenn deine Grafikkarte schnell genug ist spuckt der bis zu 9 verschiedene Werte (nämlich der nächste Backbuffer in der Backbuffer Flip Chain)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Todeskop

BeitragSa, Apr 07, 2007 13:07
Antworten mit Zitat
Benutzer-Profile anzeigen
gabs nicht auch ma im codearchiv oder so nen Triple-buffer?
 

Dreamora

BeitragSa, Apr 07, 2007 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ohne C++ Code keinen Trippe Buffer erzwingen.
DX wird das selbst machen und solange es Berechnungsresourcen über hat einfach fröhlich weitere Frames errechnen. Das ist jedoch genau genommen höchst unsinnig und meist auch sehr unerwünscht, denn es kostet Zeit die man sinnvoller Nutzen kann. (die Grafikkarte arbeitet zwar für sich alleine. Datentransfer RAM -> VRAM für die Modelle und Texturen beeinträchtigen jedoch andere Dinge)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

StepTiger

BeitragSa, Apr 07, 2007 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weißt schon, dass das im eigentlichen schon ein dritter Buffer ist?

Man hat Bild 1 und Bild 2.
1 ist Vordergrund
2 ist Hintergrund

Nun führt man Flip aus:
1 wird zu Buffer 3
2 wird zu Buffer 1
3 wird zu Buffer 2

Und jetzt haben wir Vordergrund mit Hintergrund vertauscht.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

aMul

Sieger des Minimalist Compo 01/13

BeitragSa, Apr 07, 2007 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich vermute, die Grafikkarte bekommt das ohne dritten Buffer hin...
Korrigiert mich, wenn ich falsch liegen.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Smily

BeitragSa, Apr 07, 2007 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie will sich mir der Sinnvolle Praktische nutzen von Drei buffern nicht erschliessen Confused

Letztendlich wird ja nur ein Buffer angezeigt. Und auf den Anderen wird dann gezeichnet. Also gibt es immer einen Buffer, der eigentlich gerade keinen wirklichen nutzen hat somit nur Speicher frisst.

Gruß, Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org
 

E. Urbach

ehemals "Basicprogger"

BeitragSa, Apr 07, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Du weißt schon, dass das im eigentlichen schon ein dritter Buffer ist?

Man hat Bild 1 und Bild 2.
1 ist Vordergrund
2 ist Hintergrund

Nun führt man Flip aus:
1 wird zu Buffer 3
2 wird zu Buffer 1
3 wird zu Buffer 2

Und jetzt haben wir Vordergrund mit Hintergrund vertauscht.

Nope, das muss nicht unbedingt sein, DirectX kennt drei Modi:

Flip:
Die Zeiger der beiden Buffer werden vertauscht.
Mit anderen Worten: Die Grafikkarte nimmt einfach den anderen Buffer zum Zeichnen.

Discard:
Sobald die Buffer getauscht werden wird der alte möglicherweise unbrauchbar, deshalb ist das Cls() wichtig. Übrigens die einzige Möglichkeit für HW-AntiAliasing.

Copy:
Der eine Buffer wird in den anderen kopiert.

Zitat:
Irgendwie will sich mir der Sinnvolle Praktische nutzen von Drei buffern nicht erschliessen

Du könntest zum Beispiel, wenn deine Mainloop gerade mal etwas länger dauert und die FPS sinken einfach schonmal dein vorberechnetes Bild in den Buffer zeichnen, so dass deine Funktion genug Zeit bekommt und das Spiel trotzdem flüssig läuft.
3 Buffer benutzt aber so gut wie keiner. Wink
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
  • Zuletzt bearbeitet von E. Urbach am So, Apr 08, 2007 10:00, insgesamt einmal bearbeitet
 

Dreamora

BeitragSa, Apr 07, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Es hat nie jemand behauptet es sei sinnvoll.
Denn diese Flip Chain sache ist der Grund für das berüchtigte Mauslag Problem das BlitzMax ewig lange heimsuchte unter DX (wenn es 8 bilder voraus rechnet, heisst das, das die nächste 8 * 17 ms vorberechnet sind also alle usereingaben weit über 100 ms verspätet erst reaktion zeigen ...)

Und StepTiger: so ist es eben nicht ...
Das wäre recht sinnfrei wenns "variablen like" wechseln würde, das wäre zu langsam.

Was es macht ist einfach Pointer umhängen intern.

Das heisst

FrontBuffer zeigt erst auf 1, dann auf 2, dann auf 3, ... , bis 9 im extremfall
Backbuffer hingegen hast du eigentlich keinen direkten Zugriff. In Blitz zeichnest du auf den BackBuffer, du kannst jedoch eigentlich nicht wissen, welcher der 9 stück es genau ist. Das ist auch der Grund warum einige der "coolen" tricks die auf double buffering noch ganz nett funktionieren würden in blitz so grausig den dienst quittieren.

bestenfalls mit flip true kannst du bis zu einem gewissen grad eine verkürzung der flipchain erzwingen.

Die einzig wirkliche Art nur Double buffering zu haben, ist es im treiber einzustellen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group