I’m working on an app that (in the worst case scenario) can end up drawing around 100,000 diagonal lines and a few thousand non-rectangular polygon fills with around 10,000 points per poly.
Currently, I’m using a BufferedImage as my backbuffer, and the rendering is terribly slow (around 5 seconds) for the worst case scenario. I’m considering moving to a VolatileImage for my backbuffer, so I can get GPU accelerated ops - like line draws and poly draws/fills, but I’d like to know what operations are actually accelerated. How video card dependent is this? (I.E. what ops can I expect to be accelerated on an integrated Intel chipset vs an ATI/NVidia board).
Another concern I have, is that, if I need to perform some operations that aren’t accelerated (say anti-aliased, rotated text) I’ll lose all the benefit of going to an accelerated image. Is it worthwhile to perform most of the ops on an accelerated image, copy it back to system memory (a BufferedImage), and finish whatever ops I need to there, or would I be better off just letting the software ops run slower against the vram? Or perhaps I render the hardware accelerated ops on a VolatileImage, and the non-accelerated ops on a separate BufferedImage, and blit both to the screen?
In general, I’m looking for render times in the low 100’s of ms. For the worst case scenarios, I’m willing for it to take as long as an entire second. I believe that these times would be entirely reasonable if, for example, I were using something like JOGL, but I can’t go that route. I’m not sure what I can expect out of Java2D. Any suggestions?
God bless,
-Toby Reyelts