When Only 'Too Fast' Is Fast Enough
-- by Lou Grinzo
Direct3D and OpenGL came into being via quite different routes, so you might expect them to take equally different approaches to performance issues. In reality, they use essentially the same method to provide the best possible performance on any given PC by taking advantage of whatever hardware acceleration is available and emulating what isn't. This isn't a new approach-floating-point support is implemented in the same way. A program that uses floating-point calculations can run anywhere, but it will run faster if a math chip is available.
OpenGL works in two ways. First, it can use the "generic format," performing all the drawing itself, albeit slowly. It does this by translating the program's 3-D commands into standard 2-D Windows drawing commands, which are then passed to your graphics board's device driver. The driver will do any operations it can via hardware acceleration and emulate the rest.
Second, OpenGL works with advanced graphics boards. To exploit such hardware, OpenGL requires an installable client driver or a mini-client driver. A board-specific driver allows OpenGL to pass certain operations directly to the hardware for much faster execution, while the rest are emulated in software.
Direct3D uses a similar dual-operation mode. All drawing commands are handled either by the hardware emulation layer (HEL), which is part of the basic DirectX support, or by the hardware abstraction layer (HAL), typically provided in a model-specific driver by the graphics board's manufacturer. Drawing via HEL is often much slower than hardware-based processing, and, like OpenGL's generic format, it relies on your standard Windows driver to do its best.
I Want My Web 3-D
Windows Magazine, May 1997, page 192.
[ Go to Cover Story Online Front Page ]
[ Go to May 1997 Table of Contents ]
|