ÄDIT: Hab es in GMC gepostet. Wurde in weniger als in einer Stunde gelöst.
Ich wollte Letztens mein Spiel optimieren indem ich so wenig wie möglich draw_primitive_begin benutze. Jedoch als ich das umsetzen wollte, frierte mein Spiel beim ausführen der Codes ein. Also hier der Spagetticodes:
Draw Event
Alles anzeigen
Script: tracer_draw_texture_primitve (hier friert er ein)
Alles anzeigen
Noch ein paar Sachen bevor ihr fragt:
1. das Deaktvieren der Instanzen sollte die For's in Draw Event kürzen. Was mehr Leistung am Ende her gibt.
2. global.laser_blue und global.laser_red beinhalten Texturen und sind auch korrekt.
3. tracer_draw_texture_primitve dient zum rendern von Spuren (mit zwei weiteren Scripts die beide getestet, verwendet und auch korrekt sind)
Ich wollte Letztens mein Spiel optimieren indem ich so wenig wie möglich draw_primitive_begin benutze. Jedoch als ich das umsetzen wollte, frierte mein Spiel beim ausführen der Codes ein. Also hier der Spagetticodes:
Draw Event
GML-Quellcode
- instance_deactivate_all(1)
- instance_activate_object(HomingMissile)
- draw_set_blend_mode(bm_add)
- draw_primitive_begin_texture(pr_trianglelist,global.laser_blue)
- for (i=0; i<instance_count; i+=1)
- {
- iii = instance_id[i];
- if instance_exists(iii)
- if iii.object_index == HomingMissile
- if iii.color=0
- tracer_draw_texture_primitve(9,iii)
- }
- draw_primitive_end()
- draw_primitive_begin_texture(pr_trianglelist,global.laser_red)
- for (i=0; i<instance_count; i+=1)
- {
- iii = instance_id[i];
- if instance_exists(iii)
- if iii.object_index == HomingMissile
- if iii.color=1
- tracer_draw_texture_primitve(9,iii)
- }
- draw_primitive_end()
- draw_set_blend_mode(bm_normal)
- instance_activate_all()
Script: tracer_draw_texture_primitve (hier friert er ein)
GML-Quellcode
- var xa,ya,xb,yb;
- var xda,yda,xdb,ydb;
- var xca,yca,xcb,ycb;
- var ab,de;
- xa=argument1.lastx[0]
- ya=argument1.lasty[0]
- xb=argument1.x
- yb=argument1.y
- ab=point_direction(xa,ya,xb,yb)
- de=argument0
- xda=xb+lengthdir_x(de/2,ab+90)
- yda=yb+lengthdir_y(de/2,ab+90)
- xdb=xb+lengthdir_x(de/2,ab-90)
- ydb=yb+lengthdir_y(de/2,ab-90)
- xca=xa+lengthdir_x(de/2,ab+90)
- yca=ya+lengthdir_y(de/2,ab+90)
- xcb=xa+lengthdir_x(de/2,ab-90)
- ycb=ya+lengthdir_y(de/2,ab-90)
- for(i=0;i<argument1.lastmax+1;i+=1)
- {
- xa=argument1.lastx[i]
- ya=argument1.lasty[i]
- ab=point_direction(xa,ya,xb,yb)
- xca=xa+lengthdir_x(de/2,ab+90)
- yca=ya+lengthdir_y(de/2,ab+90)
- xcb=xa+lengthdir_x(de/2,ab-90)
- ycb=ya+lengthdir_y(de/2,ab-90)
- draw_vertex_texture(xca,yca,1-i/argument1.lastmax,0)
- draw_vertex_texture(xdb,ydb,1-(i-1)/argument1.lastmax,1)
- draw_vertex_texture(xda,yda,1-(i-1)/argument1.lastmax,0)
- draw_vertex_texture(xca,yca,1-i/argument1.lastmax,0)
- draw_vertex_texture(xdb,ydb,1-(i-1)/argument1.lastmax,1)
- draw_vertex_texture(xcb,ycb,1-i/argument1.lastmax,1)
- xb=argument1.lastx[i]
- yb=argument1.lasty[i]
- xda=xca
- yda=yca
- xdb=xcb
- ydb=ycb
- }
Noch ein paar Sachen bevor ihr fragt:
1. das Deaktvieren der Instanzen sollte die For's in Draw Event kürzen. Was mehr Leistung am Ende her gibt.
2. global.laser_blue und global.laser_red beinhalten Texturen und sind auch korrekt.
3. tracer_draw_texture_primitve dient zum rendern von Spuren (mit zwei weiteren Scripts die beide getestet, verwendet und auch korrekt sind)
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bernt ()