Chart 3D
The JMSL Chart 3D package is built on top of Java 3D. For most purposes, using the Chart 3D package does not require knowledge of Java 3D.
A JMSL chart can be saved as an image file using the Java ImageIO class.
Swing components are lightweight, but the canvas used to render Java 3D is a heavyweight component. Generally, lightweight components cannot be drawn on top of heavyweight components
To allow Swing menu items to appear on top of the canvas, use
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
To allow Swing Tooltips, use
JPopupMenu.setDefaultLightWeightPopupEnabled(false);
ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false);
Java 3D is implemented on top of OpenGL. In Windows, there is also an option to use Direct3D. Both of these APIs use the video card hardware to accelerate performance. The interface between OpenGL/Direct3D and the video card hardware is the video card driver.
Problems with the video card drivers can cause problems with Java 3D and therefore with the Chart 3D package. If there is a problem, check with the hardware manufacturer for a driver update. It may also be possible to work around problems by setting certain system properties.
Java system properties can be set on the command line using the syntax
-Dname=value
They can also be set using methods in the System class.
There are many system properties which can be set to control Java 3D. The following table lists some of the most important settings:
Property |
Values |
Definition |
j3d.rend
|
ogl | d3d |
Windows-only. Specifies which underlying rendering API
should be used thus allowing both Direct3D and OpenGL native DLLs to be
installed on a singe machine. |
j3d.deviceSampleTime
|
An integer |
The sample time in milliseconds for non-blocking input
devices. |
j3d.threadLimit
|
An integer |
Controls how many threads may run in parallel
regardless of how many cpu's the system has. Setting it to "1" will make
the system act like a traditional OpenGL render loop. |
j3d.disableXinerama
|
true | false
|
Solaris only. Allows major performance boost when using dual screen environments with the X11 Xinerama extension enabled. Detailed information in the release notes. Default: false.
|
j3d.displaylist
|
true | false
|
OpenGL only. Enable use of display lists, an OpenGL
performance enhancing feature. False to disable for debugging.
|
j3d.g2ddrawpixel
|
true | false
|
If true, use glDrawPixel to flush the graphics2D to the
screen. If false, use texture mapping to flush the graphics2D to the
screen. glDrawPixel is not accelerated on some older Windows video
cards. |
j3d.sharedctx
|
true | false
|
Shared contexts are used in OpenGL for DisplayLists and
Texture Objects to improve performance. However some drivers have bugs
causing weird rendering artifacts. This can be used to disable their use
to see if this is the problem. |
j3d.debug
|
true | false
|
Prints out startup and running information. Useful for
finding out information about the underlying hardware setup. |
j3d.vertexbuffer
|
true | false
|
Use of vertex buffers, a D3D performance enhancing feature equivalent to OpenGL display lists. Some drivers have implementation problems so it might be worth turning this off if there are crashes. Default: true |
sun.java2d.d3d
|
true | false
|
Windows only. Disable use of Direct3D by
Java. |
sun.java2d.ddoffscreen
|
true | false
|
Windows only. Disable use of DirectDraw and Direct3D by
Java for off screen images, such as the Swing back buffer. |
sun.java2d.noddraw
|
true | false
|
Windows only. Completely disable use of DirectDraw and
Direct3D by Java. This avoids any problems associated with use of these
APIs and their respective drivers. |
For more details, see http://wiki.java.net/bin/view/Javadesktop/Java3DApplicationDevelopment#Java_3D_System_Properties.
PHONE: 713.784.3131 FAX:713.781.9260 |