Java game programming: image rendering hints make no difference to rendering time
April 06, 2015 [Games, Java, Performance, Programming, Rabbit Escape]I am writing an Open Source/Free Software Java desktop game (Rabbit Escape) and am experimenting with allowing you to zoom in so that the images being rendered are fairly big, and I'm seeing some slow-down.
[Note: Rabbit Escape is also available on Android, where it appears to have no problems with rendering speed...]
To speed it up, I have been experimenting with passing various values to Graphics2D's setRenderingHint method.
My conclusion is that on my platform (OpenJDK Java 7 on Linux) it makes no difference whatsoever. Please leave a comment if I'm doing it wrong.
I am timing how long each frame takes to render, and comparing the time when I insert this code before my rendering code:
// As slow and high-quality as possible, please! g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON ); g.setRenderingHint( RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY ); g.setRenderingHint( RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY ); g.setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
with inserting this before my rendering code:
// As fast and low-quality as possible, please! g.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF ); g.setRenderingHint( RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED ); g.setRenderingHint( RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED ); g.setRenderingHint( RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED );
[Documentation, such as it is, is here: RenderingHints.]
I see no appreciable difference in rendering time or image quality between these two setups, or when I leave out the calls to setRenderingHint completely.
Platform details:
$ java -version java version "1.7.0_75" OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1) OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)