Which methods from Graphics2D (got with createGraphics from a BufferedImage which was got with createCompatibleImage) are Hardwareaccelerated? All of them or only drawImage(). And if only drawImage is accelerated, what happens if I call (e.g.) drawLine()? Is the line drawn on the BufferedImage in the VRAM, or is the (BufferedImage in) VRAM copied to SystemRAM, the line drawn and the result copied back to VRAM?

Managed images (those created with create/CompatibleImage) are cached in vram, but all the rendering goes to the surface in system memory (the 'master' copy), and, thus, is unaccelerated (rendering is performed by our software loops).

It's different for VolatileImages: they don't have a system memory copy, and the rendering happens to the surface in vram. Currently (as of 1.4.2) only a small number of rendering primitives is accelerated - drawlines, fillRects, etc (some through ddraw, some through GDI and some via d3d) and copying of other accelerated images to a VolatileImage (and, with a flag, alpla blending of translucent managed images, using d3d).

The stuff said above is valid for windows. On unix it's different.First, on unix opaque managed images don't have a system memory copy, they are stored in Pixmaps, and all rendering is done to them using X11 (except for the stuff X11 can't handle, of course). Whether this rendering is accelerated or not, and whether Pixmap is stored in vram, is driver/Xserver dependent.

1-bit transparent managed images, however, do have system memory copies, similar to the windows implementation, and rendering goes to the system memory copy.

There's tons of other details, you can take a look at this (somewhat outdated) paper

hmmm.. i guess you would be the one to ask... so if i'm just constantly updating an image and want to keep putting the newly-updated image on the screen, how do I work this? I would need to draw other images on the large image for each update, which would involve transparency, but the large image itself would end up totally opaque.. so should I use a volatile image for the large one? and draw bufferedImages onto it or regular images or other volatile images? if I use awt to draw the large image to a window will that slow it down or am I supposed to use awt? sorry for not understanding this very well but i've just been using regular Image objects with a Frame window and suffering through bad performance, and think it's time I improved my code. Just several lines of pseudocode would be really helpful, thanks.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org