Imgage in ein Sprite kopieren?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Imgage in ein Sprite kopieren?

Beitrag von Kurzer »

Hallo zusammen,

ist es möglich ein Image direkt in ein Sprite zu kopieren?

Momentan mache ich das, indem ich das Image auf einen Screen zeichne und von dort dann in ein Sprite grabbe. Geht das auch ohne den Umweg des zeichnens?

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wo hast du denn das image her?

die meisten image-manipulationen kannst du auch direkt mit sprites machen.
also, wenn du das image lädst oder bearbeitest, nimm vielleicht gleich ein sprite.

damit will ich nicht gesagt haben, dass deine frage nicht interessant ist.

hab momentan keine lösung parat. pointer verbiegen vielleicht?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Das Image wird geladen - insoweit ist Deine Frage schon berechtigt. :)

Aber es handelt sich um eine Hintergrundgrafik für einen windowedScreen.
Da komme noch ein paar Sonderschritte zu, die ein direktes Laden in ein Sprite eher nicht so einfache machen.

1) Das Image wird geladen
2) Das Image wird resized (falls ein nicht passendes Hintergrundbild im Verzeichnis liegt)
3) Das Image wird auf den Screen gezeichnet
4) Dann wird das gezeichente Image in 4 Sprites gegrabbed.

Warum 4 Sprites? Ich möchte, daß der Hintergrund auch auf alten Grakas dargestellt wird. Wir hatten letztens ja die Erkenntnis, daß man dafür Sprites mit einer Kantenlänge von einem Vielfachen von 2 benötigt. Ansonsten kommt da Grafikmüll raus.

Ich "fotografiere" also 4 überlappende Bereiche des Images ab und packe sie in 4 Sprites mit vordefinierter Größe (384 x 480 pixel)

ungefähr so...

Code: Alles auswählen

+-------+-+--------+
|       : :        |
|       : :        |
+.......+.+........+
+.......+.+........+
|       : :        |
|       : :        |
+-------+-+--------+
Wenn ich das Image direkt in ein Sprite kopieren könnte, würde ich das auch vier mal machen und dann die Sprites entsprechend croppen.

Aber egal... so gehts auch. Da ich als Zeichenfläche eh den Bereich nutze, auf dem das Bild im Spiel später hingepappt wird, fällt es dem User auch gar nicht auf.

Wäre aber manchmal bestimmt doch nützlich wenn man ein Image "unsichtbar" in ein Sprite wandeln könnte.

Gruß Markus

PS: Den Hintergrund (also das Image) in jedem Frame per DrawImage darzustellen statt per Sprites ist leider viel zu langsam.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Wir hatten letztens ja die Erkenntnis, daß man dafür Sprites mit einer Kantenlänge von einem Vielfachen von 2 benötigt. Ansonsten kommt da Grafikmüll raus.

nur wenn sie als texture-sprites verwendet werden, aus denen du 3DSprites machen willst.

normale sprites können jedes beliebige seitenverhältnis haben.


wird das image denn irgendwie on-the-fly erstellt? wo kommt das denn her?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kurzer
Beiträge: 1618
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

>> nur wenn sie als texture-sprites verwendet werden, aus denen du 3DSprites machen willst.
>> normale sprites können jedes beliebige seitenverhältnis haben.

Hmm, gleich mal testen... :)

>>wird das image denn irgendwie on-the-fly erstellt? wo kommt das denn her?

Momentan wird das als normales BMP file von der Platte geladen.

Gruß Markus
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Momentan wird das als normales BMP file von der Platte geladen.

genau das meine ich. lade es also gleich als sprite.

da kannst du auch clippen um teilbereiche anzuzeigen usw., was aber wahrscheinlich nicht nötig ist.
solange du es nicht als Sprite3D benutzen willst, kanst du es so wie es is aufn screen pinnen. ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten