SpinIt Screensaver

Miscellaneous Forums/Blitz Showcase/SpinIt Screensaver

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Yes,
Local DesktopImage:TImage = LoadImage(desktopPixMap)
...
DrawImage DeskTopImage, 0 ,0

But it will still be slower anyway since you'll be drawing a huge bitmap to the screen. One way to solve this would be to divide the bitmap into sections and draw individually.
Local DesktopImage:TImage = LoadAnimImage(desktopPixMap,64,64,0,CellWidth*CellHeight)
For y = 0 to CellWidth - 1
  For x = 0 to CellHeight - 1
    DrawImage DeskTopImage,x*64,y*64,y*CellWidth+x
  Next
Next

This would be better because some cards can't handle a TImage as big as the desktop. Only problem is that you don't know ahead of time what the resolution of the desktop will be, and the only divisor I can find that works with all resolutions is 8, which makes for many tiny tiles.
You could either run the program at a specific resolution regardless of desktop resolution (requiring you to scale the desktop image to fit) or you could set the number of cells to a constant and divide the resoltion by the number of cells to get the tile's width and height (but create non power-of-two size tiles) or you can keep a table of tile sizes based on the most common resolutions and fall back to one of the other methods on a non-standard resoltion.
Or maybe there's an even more elegant solution. Once you have the desktop in a pixmap, you're pretty much free to process it how you want.