I rewrote a small part of TextureManager for my own purposes and I think that this way is more logical than the way it currently works.
In jMonkey, when a texture is loaded with ImageIO and is not already in proper (A)BGR-format or if the texture needs to be flipped, it is transferred to the texture by using Graphics2D.drawImage(…). This is a valid technique for all opaque images, but for images with an alpha-channel, the RGB-values of the pixels will turn black with low alpha-values.
I changed the following:
public static com.jme.image.Image loadImage(java.awt.Image image,
Was this based on the latest version from CVS? Texture support has changed somewhat in the past few days…I haven't had a chance to look at it, but if this isn't based on that you might be wasting your time.
The reason I used getRGB/setRGB was that it allowed me to use the same routine to convert from any colorspace into ABGR. getDataElements/setDataElements is proabably faster as you say, but it would require manual swizzling or conversion (in the case of indexed colorspaces for instance) of the components. I have not done any benchmarks to test the speed of the implementation with getRGB, but I have not noticed a drop in performance in my testcases.