2D Pixel exp thingi.
BlitzPlus Forums/BlitzPlus Programming/2D Pixel exp thingi.
| ||
http://www.teamrebellion.co.uk/pixelmorph.zip This is a crap little gfx pixel type image thing ive done. I took and image cut it into blocks then scattered em, then I make em re form the image and then blow up again. nofink special. what im wondering is if there is any way of making this faster. and would you mind showing me how ? ; ; Pixel Morph Example. ; By Yavin ; ; Const gfx_width=640 Const gfx_height=480 Const gfx_bit=16 Const gfx_window=0 Graphics gfx_width,gfx_height,gfx_bit,gfx_window SetBuffer BackBuffer() Cls Type pixel Field frame Field image Field x# Field y# Field dx# Field dy# Field r Field g Field b Field dest_x# Field dest_y# End Type Global pixel_width% Global pixel_height% Const bit_size=5 Global pixelmap=LoadImage("yav.bmp") Global pw=ImageWidth(pixelmap) Global ph=ImageHeight(pixelmap) FreeImage pixelmap pixelmap=LoadAnimImage("yav.bmp",bit_size,bit_size,0,(pw/bit_size)*(ph/bit_size)):MaskImage pixelmap,255,0,255 Global pixel.pixel = New pixel : Delete pixel loadpixelmap() Global counter While Not KeyHit(1) Cls updatepixelmap() Drawpixelmap(250,250,True,pixelmap) Text 1,1,"Working" counter=counter+1 Flip If counter=1 Then WaitKey() If counter=100 Then WaitKey() Wend FreeImage pixelmap For pixel.pixel = Each pixel Delete pixel Next Function updatepixelmap() For pixel.pixel = Each pixel pixel\x=pixel\x+pixel\dx pixel\y=pixel\y+pixel\dy Next End Function Function drawpixelmap(x=0,y=0,Midhand=False,image) If Midhand=True Local midx,midy,width,height midx=pw/2 midy=ph/2 x=x-midx y=y-midy End If For pixel.pixel = Each pixel DrawImage pixelmap,pixel\x*bit_size,pixel\y*bit_size,pixel\frame ;DebugLog pixel\frame Next End Function Function loadpixelmap() ;Stop SeedRnd MilliSecs() Local row,col,fr fr=0 row=0 col=0 For looper=1 To (pw/bit_size)*(ph/bit_size) fr=fr+1 If row=>pw/bit_size col=col+1 row=0 End If pixel.pixel=New pixel pixel\x=Rnd(-(gfx_width/2),(gfx_width/2));gfx_width/bit_size) pixel\y=Rnd(-(gfx_height/2),(gfx_height/2));gfx_height/bit_size) pixel\frame=fr-1 pixel\dest_x=row pixel\dest_y=col pixel\dx= (pixel\dest_x-pixel\x)/100; pixel\dy= (pixel\dest_y-pixel\y)/100; row=row+1 Next End Function |
| ||
Nice effect, I don't really much you can do to improve on it, because improvements are usually found in the main code the only thing I spotted was this: midx=pw/2 midy=ph/2 which can be changed to: midx=pw shr 1 midy=ph shr 1 bit shifting is faster than using / and * another thing is (and this won't get you faster code) is that this: For pixel.pixel = Each pixel Delete pixel Next can be done like this: delete each pixel that will do the same thing and is easier. |
| ||
Nice work there Yavin!! Morphing Pixels boy does that sound awesome!! Cool code too and welldone - fantastic idea! |
| ||
Thanks Mikey. Although still not as good as some of your lots demos. You know you guys could help the community a lot by providing some code or even a tut on how you do them. |
| ||
You should Pay us a visit mate! Cheers & All the best!! :) |
| ||
You might be able to get something out of this stuff: http://www.hi-toro.com/blitz/explosions.zip |