Images layern - wie?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Rick_72

Betreff: Images layern - wie?

BeitragSa, Feb 20, 2010 14:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach meinem Umstieg von B3D auf BMax vermisse ich die Möglichkeit Images zu layern (Z-Order). Gibt's das in BMax so mit Bordmitteln gar nicht? Muss ich OpenGL verwenden? Wenn ja, wie? Wenn nein, wie dann?

Danke!

Der Eisvogel

BeitragSa, Feb 20, 2010 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Du malst ein Image nach dem anderen mit der selben Reihenfolge, wie die Z-Order sein soll. Oder hab ich dich nicht richtig verstanden.

Das was du zuerst malst ist ganz hinten, das was du zuletzt malst ganz unten.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Rick_72

BeitragSa, Feb 20, 2010 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh, naja, klar, das geht halt immer. Aber das ist nicht unbedingt das was mir vorschwebt. Ich will ja auch mal Effekte auf einen Layer beschränken, ein Image drehen, skalieren oder sonstiges damit machen.
in B3D ging das recht komfortabel. Wenn ich das in BMax nur über die Reihenfolge des Zeichnens erreichen kann, dann kann ich mir ja gleich ein ganzes 3D-Framework schreiben. Den Aufwand wollte ich mir aber eigentlich sparen. Sonst wird mein Zock nie mehr fertig Wink

Xeres

Moderator

BeitragSa, Feb 20, 2010 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm einfach einen Type um die Bilder zu verwalten und zu sortieren. Läuft auch auf die richtige Zeichenreihenfolge hinaus, aber das sollte prinzipiell leicht zu automatisieren sein.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ChaosCoder

BeitragSa, Feb 20, 2010 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir erschließt sich dein Ziel auch nicht. Vielleicht beschreibst du mal, was du genau erreichen willst, da lässt sich bestimmt ne bessere Methode finden.
Projekte: Geolaria | aNemy
Webseite: chaosspace.de
 

OldSkool90

BeitragSa, Feb 20, 2010 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
So wie ich ihn verstanden habe, möchte er Bildebenen erzeugen, um zum einen die Ausgabereihenfolge zu beeinflussen und zum anderen Effekte auf bestimmte Ebenen zu beschränken.

Rick_72

BeitragSa, Feb 20, 2010 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
@OldSkool90: genau das!

In B3D musste ich mich um manuelle Reihenfolgen und Gedöns nicht kümmern, sondern habe einem Image (Objekt) einfach eine Z-Plane zugewiesen .. und schwupps wurde das in der richtigen Reihenfolge gezeichnet - automatisch. Eine Ebene drehen .. kein Problem.

Wenn ich das jetzt alles nachprogrammieren muss, läuft das auf ein 3D-Framework hinaus. Meine Frage war, ob das nicht einfacher geht. Vielleicht bin ich ja nur zu doof in der wunderbaren Anleitung die richtigen Kommandos zu entdecken. Question

Xeres

Moderator

BeitragSa, Feb 20, 2010 15:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Bilder in Types stecken und in Listen verwalten und nach z sortieren... das scheint mir einfacher als eine 3D Engine zu schreiben.
BlitzMax: [AUSKLAPPEN]
SuperStrict

Local list:TList = CreateList()

For Local i:Int = 0 Until 20
list.AddLast(String(Rand(0, 100)))
Next

For Local s:String = EachIn list
Print s
Next

Print("--------")
list.Sort() '*** Liste Sortieren ggf. mit eigener Compare-Funktion.

For Local s:String = EachIn list
Print s
Next
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Rick_72

BeitragSa, Feb 20, 2010 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, hier kackt Thunderbird alle 2 Minuten mit einem BSOD ab .. tcpip.sys Mad
Ich muss wohl mal die Firewall neu installieren. Dauert ein paar Minuten..

mpmxyz

BeitragSa, Feb 20, 2010 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So viel Aufwand ist das aber auch wieder nicht, da es noch nicht einmal auf ein 3D-Framework hinaus geht.
(Vorraussetzung: gute Kenntnisse von Types)

Dann hast du einen Layer-Type, dessen Objekte beim Erstellen ein Bild und eine Z-Position zugewiesen wird.
Diese Objekte befinden sich in einer sortierten Layerliste, die beim Zeichnen ausgelesen wird. (->Zeichenmethode für die Objekte und eine ZeichneAlle-Funktion, um alle Layer zu zeichnen.)
Um die Standardsortierfunktionen nutzen zu können, muss man im Layer-Type die "Compare"-Methode überschreiben, in der dann die Z-Positionen verglichen werden.
Um ein Objekt zu einem Layer hinzuzufügen braucht man dann auch noch eine Liste pro Layer und ein paar Zugriffsfunktionen.

So in etwa würde ich es machen.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Der Eisvogel

BeitragSa, Feb 20, 2010 16:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst ein Image malen und danach die Rotation setzten, Image malen und Rotation zurück setzten, dann weiter malen. Dann wird nur diese Ebende dazwischen gedreht.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Rick_72

BeitragSa, Feb 20, 2010 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine Herren, BSOD nervt Evil or Very Mad resp. Thunderbird resp. komische Addons Wink

Zurück zum Thema: ich werde also mit CreateImage alle Images zeichnen, in einer Liste speichern, diese sortieren und dann einfach alles übereinanderkloppen. Klar, das geht natürlich immer. Mal sehen, was ich heute Nachmittag zusammenhacken werde.

Vielen Dank für Euren Input! Hat mir durchaus weitergeholfen. Ich hoffe, dass ich auch irgendwann mal soweit bin, dass ich anderen helfen kann.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group