Seite 1 von 2
Gibt es auch ein FlippBuffers() für ein Windows-Fenster
Verfasst: 25.06.2007 16:29
von Zweihänder
Folgendes Prob:
Ich habe nunmehr einen Grafikaufbau in einem Windows-Fenster hinbekommen. Da ich gerne ein rundenbasiertes Strategie-Spiel "zaubern" möchte handelt es sich dabei um den Aufbau einer Landkarte, die aus einzelnen Feldern besteht.
Leider ist dieser Aufbau schnarchend langsam.
Die Frage ist nunmehr, wie ich diesen verschnellern kann. Mit FlipBuffers() komme ich ja nicht weiter, da dieser Befehl mit OpenScreen einhergeht...

Verfasst: 25.06.2007 16:52
von PureBasic4.0
Wie wär's mit OpenWindowedScreen?
Verfasst: 25.06.2007 17:01
von Hartmut
Hallo,
FlipBuffers() ist eine screenorientierte Funktion.
Du kannst die Grafik doch zuerst programmintern auf einem Image aufbauen (2Ddrawing mit OutputID = Imageoutput(#DeinImage))
und dann auf ein Imagegadget bringen :
ImageGadget(#DeinGadget, x, y, Breite, Hoehe, ImageID(#DeinImage))
Das fertige Produkt steht dann also auf EINEM Imagegadget in deinem Fenster und das sollte eigentlich flott aufgebaut werden.
Ich weiß aber nicht, ob ich deine Fragestellung richtig interpretiere,
vielleicht konkretisierst du etwas - nötigenfalls mit BeispielCode.
Gruß : Hartmut
Verfasst: 25.06.2007 17:34
von Zweihänder
Also folgendermaßen:
Ich möchte in einem Windowsfenster einen Teil einer Karte ausgeben. Die Karte soll sich aus mehreren quadratischen Feldern zusammensetzten und soll natürlich auch gescrollt werden können, da es sich ja nur um einen Ausschnitt handelt (wenn ihr Warlords kennt, dann wißt ihr was ich meine).
Die Karte ist ein zweidimensionales Array-Feld mit jeweils einer Zahl als Wert, der den Untergrund spezifiziert.
So, den Bildschirmaufbau des Kartenausschnittes habe ich nun mit einer Schleife "For i=1 to blablabla imagegadget..." (um es abzukürzen) hinbekommen. Allerdings baut sich die Karte sehr langsam auf. Man kann quasi zugucken, wie der Rechner jedes Feld einzeln hinsetzt und dann weitergeht. Dies soll nachher ja gerade nicht so sein.
Mit Openscreen und FlipBuffers war das ja alles kein Problem. Beim Programmstart war schups alles schnell da. Aber jetzt... Klar kann man ja jetzt sagen.. dann machs doch mit OpenScreen.
Ich finde die Windowsanwendung halt praktischer...
Für jede Hilfe bin ich immens dankbar. Ja ja, aller Anfang ist schwer

Verfasst: 25.06.2007 17:43
von PureBasic4.0
ich glaube, da war mal was mit tilemapping. musst du mal die Sufu oder so benutzen. Habe mich damit noch nie beschäftigt...

Verfasst: 25.06.2007 18:06
von Hartmut
... und du bist sicher, dass du nur EIN ImageGadget für die Ausgabe benutzt ?
Ich denke mal, das ist jetzt alles nicht konkret genug.
Wenn du etwas lauffähiges zum herunterladen hast, schau ichs mir gerne mal an.
Gruß : Hartmut
Verfasst: 25.06.2007 18:16
von Machete @PB
Wieso machst du es nicht mit OpenWindowedScreen,? (Wie PureBasic4.0 schon sagte) OpenWindowedScreen hat alle Vor Teile von Screens und Windows wie zum Beispiel Clearscreen() und Flipbuffers()
Verfasst: 25.06.2007 19:53
von Zweihänder
Danke, werd es mal ausprobieren...

Verfasst: 25.06.2007 20:20
von Zaphod
Eine kurze vermutung... baust du das Bild für das gesammte level auf oder nur für den ausschnitt den du grade darstellst?
Verfasst: 25.06.2007 20:29
von Zweihänder
Ich baue natürlich nur den Ausschnitt auf. Aber ich muss der Vermutung von Hartmut recht geben. Ich baue nicht nur ein Gadget auf, sondern für jeden Teil eins. Also quasi 20x15). Könnte vielleicht daran liegen oder?
