I thought I would post this project so far to see how it runs as i've had to use Usebuffer DX7 command again as I have 2 transparent images that both need a colour applied to them every frame then grabbed again.
Using DisplaySolidSprite along with GrabSprite was too slow again.
Unfortunataly jace's trick of drawing a sprite on my image doesn't work in this instance as I use DrawRGBFilter to create a fast 'wash' of colour of the sprite before setting the transparency again to the new washed out background.
I don't know of any other way faster way of creating this effect - perhaps someone does?
You'll see what I mean when you run the exe.
See below for an example:
;- RGBFilter() filter test
InitSprite():InitKeyboard()
OpenWindow(1,0,0,640,480,"",#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_BorderLess)
OpenWindowedScreen(WindowID(1),0,0,640,480,0,0,0)
;-create a blank image and draw a box on it
CreateImage(1,640,480)
StartDrawing(ImageOutput(1))
Box(200,200,200,200,RGB(234,99,12))
StopDrawing()
;-create a blank sprite and draw our image on it
CreateSprite(1,640,480,#PB_Sprite_Memory) ;-create a blank sprite to draw on
StartDrawing(SpriteOutput(1))
DrawImage(ImageID(1),0,0) ;-dump our image on it
DisplayRGBFilter(0,0,640,480,123,55,12) ;-wash our screen with colour - doesn't work on a sprite as this is a sprite command ?
StopDrawing()
;TransparentSpriteColor(1,RGB(123,55,12))
DisplaySprite(1,0,0) ;-show the drawn over sprite
FlipBuffers()
Repeat:Delay(1):ExamineKeyboard():Until KeyboardPushed(#PB_Key_All)