Spritebuffer direkt beschreiben

Previous topic - Next topic

Steinbock

Hallo zusammen

Gibt es in GLBasic die Möglichkeit direkt in den Bitmapbuffer eines Sprites zu schreiben auser mit SETPIXEL?
Time will come. It's just a matter of time...

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Steinbock

Ok.

1. Fall:
Crossfading (fliessender Übergang von 2 Bildern -> kann ich mit ALPHAMODE umgehen.

2. Fall:
Ich schreibe eine Mode7-Routine (ähnlich Mario Kart auf SNES).
Dazu möchte ich in einem Buffer die Grafik erstellen und danach auf den aktuellenScreen bringen. Dies ist aber mit SETPIXEL zu langsam.
Time will come. It's just a matter of time...

Schranz0r

Und wenn du CREATESCREEN verwendest ?


Quote from: HELPFILE
Erstellt einen virtuellen, versteckten Bildschirm, dessen Inhalt auf das Bild von sprite id_sprite% gezeichnet wird. Damit kann man sehr effektiv und einfach direkt auf ein Sprite/Textur zeichnen.
Der Bildschirm, als auch das Sprite haben die Größe w% x h% (Breite x Höhe).

id_screen% ist einer der 32 virtuellen Bildschirme und muss daher zwischen 0 und 31 liegen.

GLBasic verwendet bei echten OpenGL Implementationen die Erweiterung: GL_EXT_framebuffer_object. Diese kann auf manchen (sehr alten) Systemen nicht vorhanden sein. GLBasic wird dann trotzdem diese Funktionalität zur Verfügung stellen. Jedoch wird die Geschwindigkeit dadurch evtl. langsam und die Größe des Bildschirms kann auf die des echten Fensters begrenzt sein.

Mit PLATFORMINFO$("GLEX:glBindFramebufferEXT") kann man feststellen, ob die Erweiterung vorhanden ist.



Code (glbasic) Select

// CREATESCREEN
PRINT "Monitor", 0,0
GRABSPRITE 1, 0,0,32,32

// Screen 0, Sprite 13
CREATESCREEN 0, 13, 128,128
// Screen nutzen für alle Ausgaben
USESCREEN 0
   PRINT "Offscreen", 0,0
   DRAWSPRITE 1,0,32
// Wieder auf das Fenster umschalten
USESCREEN -1

// Screen zeichnen
DRAWSPRITE 13, 100,100
SHOWSCREEN
MOUSEWAIT


I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Steinbock

Danke für den Tip, aber die Geschwindigkeit ist in etwa dieselbe, egal ob unter WIN oder WIZ. Werde mal schauen ob ich beim WIZ eventuell über INLINE einen Workaround finde. :doubt:
Time will come. It's just a matter of time...

Schranz0r

Drawpixel geht eigentlich von der Geschwindigkeit, schlimmer ist Readpixel! Vorher würde ich über ein Tool die Bilder auslesen und die RGB-Werte in eine Datei ballern...

Hab ja keine Ahnung was du vor hast  :neutral:
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard