Hi Ryan,
I'll let others describe hardware acceleration in AWT/Swing but in
JavaFX, D3D and ES2 shaders are used to draw. These run directly on the
graphics card and render data that is downloaded there. Because JavaFX
has a scene graph, it has a notion of what has been changed and can
render only a subset of the scene graph nodes.
This is a very high level description of JavaFX but captures the essence
of what is happening. Any other FX committers want to comment?
Steve
On 2014-01-01 1:39 PM, Ryan Cuprak wrote:
What is the difference between hardware acceleration in JavaFX versus
Swing/AWT? I heard a while back someone claim that Swing/AWT could never fully
leverage hardware acceleration. However there are the usual mix of -D
parameters (sun.java2.opengl/sun.java2d.d3d, etc.) for Swing/AWT. So I am just
wondering how JavaFX’s acceleration differs from the hardware acceleration in
Swing. When I was giving a talk at a JUG meeting someone called me out on the
hardware acceleration bit and I realized I didn’t fully understand the
differences between the two.
I understand that JavaFX has a scene graph and Swing doesn’t etc. So I am
assuming that the scene graph operations are optimized on the GPU whereas if
you were trying to replicate a scene graph in Swing you would obviously be
doing all the work on the CPU. So Swing’s hardware acceleration is more about
buffers?
I did come across this article:
https://weblogs.java.net/blog/opinali/archive/2010/05/03/first-long-look-javafx-13-and-prism
Specifically this line caught my attention "Prism finally renders effects
with full hardware acceleration and without the extra buffer copies that spoil
effects on the Swing toolkit.”
This article is a dated - brings up a second question about hardware
acceleration with a hybrid Swing/JavaFX application - what happens?
Thanks,
-Ryan