There are currently 4 ways of rendering with J2D on windows:
- default (no options)
- no hw acceleration at all (sun.java2d.noddraw=true)
- directdraw/direct3D (sun.java2d.ddforcevram=true, sun.java2d.translaccel=true, sun.java2d.ddscale=true)
- opengl (sun.java2d.opengl=True)
The current default is often the worst over-all on decent computers with either good graphics cards& drivers (use option 3 or 4) & good CPU’s (use noddraw).
Why doesn’t the VM detect what graphics card driver is present and enable the suitable options? Or maybe there should be an API that would tell us the driver’s state so that we can enable the right option. Eg: GraphicsCardDriver.isStable(“sun.java2d.opengl”). Or to find out whether hw-‘acceleration’ is actually faster - GraphicsCardDriver.isFaster(“sun.java2d.noddrawl”). Obviously these methods are a bit simplistsic, but you get my drift ;).
This improvement would make J2D a lot faster and less hit & miss. Also, what’s the point of all the J2D team’s improvements to the OGLpipeline & the D3D pipeline when its rarely unleashed due to the lowest-common denominator of crap computers?