CreateSprite() und CopySprite() Problem

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

CreateSprite() und CopySprite() Problem

Beitrag von Quaxi »

Hallo wieder mal.
Also folgendes Problem:

Ich will mithilfe von CreateSprite() ein leeres Feld erstellen. 100x3000 Pixel gross. Schön und gut.
Nur will ich aus mehreren Sprite's ein einziges machen. Sprich, ich habe lauter kleine verschiedene 100x100 Pixel grosse Bilder die ich dann in das eine große kopieren will. Also 30 mal.
Nur wie soll ich das machen?!? Mit CopySprite geht das ja nicht, weil ich da ja nur immer ein Sprite rein kopieren kann ohne irgendwelche Koordinate anzugeben.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Du könntest den Buffer umstellen, auf das Sprite. Anstelle dann auf den Rückbuffer des Screens direkt anzuzeigen, werden dann alle nachfolgenden Sprite-Darstellungen auf dem Sprite ausgeführt.
Beispiel:

Code: Alles auswählen

createsprite(0, 300, 300)
createsprite(1, 100, 100)
usebuffer(0)
displaysprite(1, 0, 0)
Schon wird sprite 1 nicht auf den Bildschirm, sondern auf dem Sprite 0 angezeigt. Dort bleibt es auch und wird nicht nach einem Frame wieder gelöscht. Also es bleibt dauerhaft ein Abbild auf dem Sprite, bis es übermalt wird oder so...
Per usebuffer(-1) wird die Ausgabe wieder auf den Screen-Buffer gelegt.
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag von Quaxi »

OK, das würde schon funktionieren, aber ich will zuvor noch einen Hintergrund mit dem normalen Backbuffer anzeigen, würde der dann nicht überschrieben?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Wenn aktuelle Buffer nicht der BackBuffer ist, wird da auch nichts übermalt oder gelöscht. Gelöscht wird nur etwas, wenn man [c]ClearScreen()[/c] benutzt oder eine große Box malt.
Bild
Antworten