hi
Ich habe gerade was nettes gebastelt. Ich erstelle ein ds_grid (48x30). Darin setze ich Zahlen. Anhand dieser Zahlen lasse ich Sprites zeichnen. Leider muss ich für den gewünschten Effekt drei verschiedene Sprites in 3 verschiedenen Ebenen zeichnen. Somit geht das Script in jedem Step drei mal durch alle Koordinaten um zu überprüfen ob es was zu zeichnen gibt. Das Ergebnis sieht super aus. Leider geht das arg in die Perfomance. Es läuft zwar immernoch flüssig, aber gäbe es da nicht doch einen kleinen Kniff, mit dem ich das ganze beschleunigen könnte? Surfaces kommen nicht in Frage, da das ganze dynamisch bleiben soll.
Das Ganze sieht im Drawevent so aus:
Alles anzeigen
Vielen Dank für die Müh!
Ich habe gerade was nettes gebastelt. Ich erstelle ein ds_grid (48x30). Darin setze ich Zahlen. Anhand dieser Zahlen lasse ich Sprites zeichnen. Leider muss ich für den gewünschten Effekt drei verschiedene Sprites in 3 verschiedenen Ebenen zeichnen. Somit geht das Script in jedem Step drei mal durch alle Koordinaten um zu überprüfen ob es was zu zeichnen gibt. Das Ergebnis sieht super aus. Leider geht das arg in die Perfomance. Es läuft zwar immernoch flüssig, aber gäbe es da nicht doch einen kleinen Kniff, mit dem ich das ganze beschleunigen könnte? Surfaces kommen nicht in Frage, da das ganze dynamisch bleiben soll.
Das Ganze sieht im Drawevent so aus:
Quellcode
- var xx = 0;
- var yy = 0;
- repeat(ww*hh) {
- c = ds_grid_get(grid_cloud,xx,yy);
- if (c >= 0) {draw_sprite(spr_cloud_dark,c+1,xx*z,yy*z);}
- xx += 1;
- if (xx = ww-1) {xx = 0; yy += 1;}
- }
- var xx = 0;
- var yy = 0;
- repeat(ww*hh) {
- c = ds_grid_get(grid_cloud,xx,yy);
- if (c >= 0) {draw_sprite(spr_cloud_middle,c+1,xx*z,yy*z);}
- xx += 1;
- if (xx = ww-1) {xx = 0; yy += 1;}
- }
- var xx = 0;
- var yy = 0;
- repeat(ww*hh) {
- c = ds_grid_get(grid_cloud,xx,yy);
- if (c >= 0) {draw_sprite(spr_cloud_bright,c+1,xx*z,yy*z);}
- xx += 1;
- if (xx = ww-1) {xx = 0; yy += 1;}
- }
Vielen Dank für die Müh!