|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | ||||||||
See:
Description
| Class Summary | |
|---|---|
| Agile2D | A class containing static convenience methods, rendering hints and constants for the Agile2D rendering library. |
| AgileGradientPaint | A GradientPaint that contains RGB int methods for setting colors, to avoid allocating Color objects if possible. |
| AgileGraphics2D | AgileGraphics2D implements a reasonably complete subset of the standard Java2D Graphics2D API, using JOGL OpenGL as the rendering engine. |
| AgileOffscreen | Support for offscreen hardware accelerated OpenGL rendering using Agile2D. |
| AgileRenderingHints | Contains Agile2D-specific rendering hints, and global static methods. |
| AgileState | AgileState locally keeps OpenGL state to avoid useless
state changes that are very expensive in OpenGL. |
| GLContextManager | |
| ImageUtils | Performs operations on Java AWT BufferedImage data. |
Agile2D is a package for rendering Java2D Graphics via the OpenGL pipeline. It uses the Java Games JOGL OpenGL bindings to access OpenGL.
OpenGL is an interesting graphics API for a number of reasons. It is highly scalable and widely supported. It runs on everything ranging from affordable game cards to graphics supercomputers. It is designed to support hardware acceleration for a wide range of useful graphics operations. It offers the potential for mixing two-dimensional and three-dimensional graphics in the same space. It also opens the door to using advanced rendering tricks (e.g. vertex shaders) for graphics, if you are prepared to write low-level code.
Unfortunately, OpenGL has poor support for two-dimensional graphics. Certain very common 2D tasks are not included in the core OpenGL API. It is missing a standard font library, font hinting, 2D concave polygons, thick lines, arbitrary clip regions, and large images.
By implementing the standard Java2D API using OpenGL, the Agile2D OpenGL Renderer aims to hide many of the downsides of OpenGL as a 2D rendering engine, whilst maximizing the opportunities for hardware acceleration.
A range of interesting applications run significantly faster under OpenGL than under other 2D APIs. This is because OpenGL graphics cards can accelerate certain operations in hardware. Opportunities for acceleration include:
Not all applications benefit from OpenGL acceleration. Indeed, not all computers have special OpenGL hardware. So, in certain cases, OpenGL may actually perform more slowly than the reference implementation of Java2D provided in Sun's JDK.
Another drawback with OpenGL is that there are inconsistencies between implementations on different cards and computers. In some cases, OpenGL rendered graphics look different on different machines. The Agile2D renderer may therefore look less consistent and/or attractive than the reference Java2D renderer.
The Agile2D OpenGL Renderer is not a complete standalone implementation of Java2D. Rather, it bootstraps on the Java2D implementation shipped with the Java Virtual Machine. It falls back on the built-in Java2D renderer for certain operations. For example, glyphs for fonts are obtained through Java2D's renderer, but rendered via OpenGL's texture memory.
The Agile2D OpenGL renderer supports a reasonable subset of the Java2D API, although not all Java2D capabilities are supported. A wide range of applications should run reasonably well under Agile2D. For example, Agile2D supports Java Swing components and the Java2D Demo suite.
Agile2D uses the JOGL library to access OpenGL from Java. JOGL is a freely available library created by the Sun Java Games group. It supports OpenGL 1.1 on a number of different Operating Systems.
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES | ||||||||