Compare to the pure Blitz way:
Const a1=255
Const a2=256*255
Const a3=32768*2*255
Graphics 320,240,32,1
SetBuffer BackBuffer()
Dim img(2)
img(0)=LoadImage("one.bmp")
img(1)=LoadImage("two.bmp")
img(2)=LoadImage("three.bmp")
LockBuffer ImageBuffer(img(0))
LockBuffer ImageBuffer(img(1))
LockBuffer ImageBuffer(img(2))
Dim imgs(2,239,319,2)
For a=0 To 2
For b=0 To 239
For c=0 To 319
imgs(a,b,c,0)=ReadPixelFast(c,b,ImageBuffer(img(a))) And a1
imgs(a,b,c,1)=(ReadPixelFast(c,b,ImageBuffer(img(a))) And a2) Shr 8
imgs(a,b,c,2)=(ReadPixelFast(c,b,ImageBuffer(img(a))) And a3) Shr 16
Next
Next
Next
FreeImage img(0)
FreeImage img(1)
FreeImage img(2)
las=MilliSecs()
Dim multa(255)
Dim multb(255)
While Not KeyHit(1)
mil=MilliSecs()
time=(mil Shr 12) Mod 3
imga=time
imgb=(time+1) Mod 3
gradb=(mil Shr 4) Mod 256
grada=255-gradb
For a=0 To 255
multa(a)=(grada*a) Shr 8
multb(a)=(gradb*a) Shr 8
Next
LockBuffer BackBuffer()
For b=0 To 239
For a=0 To 319
WritePixelFast a,b,multa(imgs(imga,b,a,0))+multb(imgs(imgb,b,a,0)) Or ((multa(imgs(imga,b,a,1))+multb(imgs(imgb,b,a,1))) Shl 8) Or ((multa(imgs(imga,b,a,2))+multb(imgs(imgb,b,a,2))) Shl 16)
Next
Next
UnlockBuffer BackBuffer()
Text 0,0,fps
Flip
If MilliSecs()>las+1000 Then
las=las+1000
fps=count
count=0
End If
count=count+1
WendNeed something better than WritePixel"Fast"