[quote]Thanks for you help barfy.
[/quote]
No prob :).
Yes, you can ask for 100000Hz refresh rate but your monitor is only capable of displaying 85 frames per second from the description you gave.
With 3 or more buffers, you are essentially disabling vsync since you’ve got more than 2 offscreen surfaces to alternately render with, so BufferStrategy.show() doesn’t block even if the monitor is not ready at the moment the method is called. So, although your FPS counter is displaying > 85 frames per second, that’s just the amount of times your rendering loop is called per second. The actual drawing that happens on the monitor takes place at 85fps still.
Although there is a small overhead just in iterating through an array, it’s THE OVERHEAD caused by drawImage() that you call each access that’s causing the majority of the slowdown (note that I’m not talking about the actual blitting of pixels, but the preparation that drawImage() does before the blitting operation).
Try writing a little test-case and see for yourself.
So, to compensate you can have either:
a) less but larger tiles to cover the same area - ie 250 64x64 or 445 48x48 tiles instead of 1000 32x32 for example
b) use a dirty rectangle algorithm if your app is suitable for such a scheme (ie, more or less static)
c) Pre-render all the tiles onto an offscreen buffer, and display that on the screen each frame if your app is more or less static.
d) Or something else I (very likely) haven’t thought of.