Draw3D2-Zeichnungsreihenfolge (zOrder)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Iguan

Betreff: Draw3D2-Zeichnungsreihenfolge (zOrder)

BeitragDi, Feb 21, 2012 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen

Ich hoffe dass diese Frage noch nicht bereits gestellt wurde, im Forum konnte ich jedenfalls nichts finden:

Ich habe einen kleinen Tile-Editor gebastelt, welcher verschiedene Bilder (Tile-Palletten mit je 256 Tiles) lädt. Dies mache ich mit
Code: [AUSKLAPPEN]

Pallette(0) = LoadImage3D(.......
Pallette(1) = LoadImage3D(......
etc...


Anhand diesen Paletten werden die einzelnen Tiles gegrabbt (Grabimage3d) und in einem Array
Code: [AUSKLAPPEN]

TileNr = 0
For PalletteNr = 0 To PalletteCount-1
   For y = 0 To PalletteTileCountXY-1
      For x = 0 To PalletteTileCountXY-1
         Tile(TileNr) = GrabImage3D(Pallette(PalletteNr),x*TileSize,y*TileSize,TileSize,TileSize)
         TileNr = TileNr + 1
      Next
   Next
Next

gespeichert.


Anschliessend lade ich mit LoadImage3D ein Native, welches für das zeichnen eines Menüs verwendet wird (Rechteck welches die Untere Bildschirmhälfte abdeckt, gezeichnet mit Rect3D).

Nun möchte ich auf dieses Menü (Rechteck) wiederum Tiles aus den zuvor geladenen Bildern (Palletten) zeichnen, damit der Benutzer auswählen kann, mit welchem Tile er nun weiterzeichnen möchte (Sprite-Auswahl).

Leider kriege ich es nicht hin, denn so wie es scheint wird die Z-Order der Sprites dadurch bestimmt, welches Bild man zuerst lädt. Bei gegrabbten Images von einem Quellbild, lässt sich die Zeichnungsreihenfolge frei bestimmen. Bei mehreren Quellbilldern kann man die Zeichnungsreihenfolge nur von Bildern ihrer entsprechenden Quelle frei bestimmen. Hoffentlich versteht ihr was ich meine... Rolling Eyes



LANGE REDE, KURZE FRAGE:
-----------------------------------

Gibt es eine Möglichkeit, dass sich Draw3D2 so verhält wie Blitzbasic2D. Damit meine ich, dass das zuerst gezeichnete, gegrabbte Bild (egal von welchem Quellbild) zu-unterst ist, und alle nachfolgend gezeichneten grabb-Bilder das jeweils letztgezeichnete überdecken.

Wie löst ihr das Problem?


mfg

Iguan

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Feb 22, 2012 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht nicht, weil jedes geladene Bild ein Surface benutzt und somit als ganzes an die Grafikkarte gesendet wird das es zu zeichnen gilt. Du kannst natürlich deine Paletten auch mehrfach laden und mit entsprechenden ZOrder versehen. Da erfordert jedoch erhöhtes Bearbeitungspotenzial. Oder man bearbeitet die geladenen Bilder gleich so, dass alle Elemente einer Palette bereist eingezeichnet sind, die auch auf einmal eingezeichnet werden müssen. Du lädst dann nur noch ein Bild für deine Paletten. Das ist dann nicht nur einfach in der Handhabung später, sondern erhöht auch die Zeichnegeschwindigkeit, da weniger Surfaces an die Grafikkarte pro Frame gesendet werden.

Übrigens macht GrabAnimImage3D genau das gleiche, was du da mit deiner doppelt verschachtelten Schleife machst. Dieser Befehl ist dem 2D-Befehl sehr angenährt.

In deinem Beispiel müssten folgende Werte richtig sein: GrabAnimImage3D(Pallette(PalletteNr),TileSize,TileSize,0,AnzahlFrames,1,1)
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Iguan

BeitragDo, Feb 23, 2012 20:36
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, dann schaue ich, dass ich alle Bilder auf ein *.png kriege. Das mit GrabAnimImage3D hab ich nun umgesetzt und das funktioniert soweit! Vielen Dank!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group