Hallo zusammen
Gibt es in GLBasic die Möglichkeit direkt in den Bitmapbuffer eines Sprites zu schreiben auser mit SETPIXEL?
Nein
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.
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.
// 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
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:
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: