-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Performance of Java 2D drawing operations (part 3: image opacity)


Series: operations, images, opacity


Not because I was enjoying it, I seemed compelled to continue my quest to understand the performance of various Java 2D drawing operations. I'm hoping to make my game Rabbit Escape faster, especially on the Raspberry Pi, so you may see another post sometime actually trying this stuff out on a Pi.


operations

images

Rabbit Escape


But for now, here are the results of my investigation into how different patterns of opacity in images affects rendering performance.


You can find the code here: gitlab.com/andybalaam/java-2d-performance.


gitlab.com/andybalaam/java-2d-performance


Results


Images with partially-opaque pixels are no slower than those with fully-opaque pixels

Large transparent areas in images are drawn quite quickly, but transparent pixels mixed with non-transparent are slow


Advice


Still avoid any transparency whenever possible

It's relatively OK to use large transparent areas on images (e.g. a fixed-size animation where a character moves through the image)

Don't bother restricting pixels to be either fully transparent or fully opaque - partially-opaque is fine


Opacity patterns in images


Non-transparent images drew at 76 FPS, and transparent ones dropped to 45 FPS.


I went further into investigating transparency by creating images that were:


All pixels 50% opacity (34 FPS)

Half pixels 0% opacity, half 100%, mixed up (34 FPS)

Double the size of the original image, but the extra area is fully transparent, and the original area is non-transparent (41 FPS)


I concluded that partial-opacity is not important to performance compared with full-opacity, but that large areas of transparency are relatively fast compared with images with complex patterns of transparency and opacity.


Numbers


Transparency and opacity


[‡ transparency results 1]


[‡ transparency results 1]


⊞ table ⊞


Test FPS

large nothing 90

large images20 largeimages 76

large images20 largeimages transparentimages 45

large images20 largeimages transparent50pcimages 34

large images20 largeimages transparent0pc100pcimages 34

large images20 largeimages transparentareaimages 41


Feedback please

Please do get back to me with tips about how to improve the performance of my experimental code.


Feel free to log issues, make merge requests or add comments to the blog post.


Originally posted at 2019-02-11 23:51:05+00:00. Automatically generated from the original post : apologies for the errors introduced.


issues

merge requests

original post

-- Response ended

-- Page fetched on Sun May 19 05:03:39 2024