views:

2397

answers:

2
A: 

From what I remember when I was thinking about doing graphics programming in Java, the built in libraries are slow. I was advised on GameDev.Net that anyone doing anything serious would have to use something like jogl

Nick Stinemates
Well since the largest performance penalty is actually calling drawImage(), I'd consider 450 calls with 700 FPS pretty good. I'd have to write the same thing in jogl to see if there's a significant difference, but great progress has been made with Java2D in recent versions of Java.
Consty
+5  A: 

I think I found a solution by researching and putting bits and pieces together from too many Google searches.

Here it is, comments and all:

private BufferedImage toCompatibleImage(BufferedImage image)
{
 // obtain the current system graphical settings
 GraphicsConfiguration gfx_config = GraphicsEnvironment.
  getLocalGraphicsEnvironment().getDefaultScreenDevice().
  getDefaultConfiguration();

 /*
  * if image is already compatible and optimized for current system 
  * settings, simply return it
  */
 if (image.getColorModel().equals(gfx_config.getColorModel()))
  return image;

 // image is not optimized, so create a new image that is
 BufferedImage new_image = gfx_config.createCompatibleImage(
   image.getWidth(), image.getHeight(), image.getTransparency());

 // get the graphics context of the new image to draw the old image on
 Graphics2D g2d = (Graphics2D) new_image.getGraphics();

 // actually draw the image and dispose of context no longer needed
 g2d.drawImage(image, 0, 0, null);
 g2d.dispose();

 // return the new optimized image
 return new_image; 
}

In my previous post, GraphicsConfiguration was what held the information needed to create optimized images on a system. It seems to work pretty well, but I would have thought Java would automatically do this for you. Obviously you can't get too comfortable with Java. :) I guess I ended up answering my own question. Oh well, hopefully it'll help some of you I've seen trying to make use of Java for 2D games.

Consty