Canvas performance on Mac OS
Jim Graham
james.graham at oracle.com
Mon Mar 30 19:26:00 UTC 2015
On 3/30/15 12:04 PM, Jim Graham wrote:
> drawPolygon() is a very complex operation that involves things like:
>
> - dealing with only rendering common points of intersection once
An example of the distinction here - try a test case where you execute
the exact same diagonal line primitive 1,000 times on top of itself
(identical coordinates for all of them).
Then change the example to use a Polygon that goes from point A to point
B and back, over itself 1,000 times.
The result of all of those lines will have jagged edges even though the
lines themselves are antialiased because the partially filled pixels
along the edges slowly accumulate opacity until their carefully blended
edges get lost in the accumulated error.
The result of the polygon will be identical to just drawing an
antialiased line from point A to point B because it is turned into a
single coverage result by the software rasterizer.
Another similar example - set an opacity of 0.1 on all of those
rendering calls. The (multi-)drawLine example will look like an opaque
line of 1.0 opacity, but the polygon will still look like it has an
opacity of 0.1 because the coverages are accumulated across the entire
polygon before any rendering occurs and so each pixel is only blended
once...
...jim
More information about the openjfx-dev
mailing list