 |
GLScene the OpenGL solution for
Delphi
|
This page has been accessed |
 |
times since 13. April 2000 |
|
Maintained by Eric Grange -
This library is based on Mike Lischke's
GLScene.
Download
the latest version (v0.7.1) including OpenGL12 interface unit,
Geometry and 3DS import library.
GLScene is an OpenGL based 3D library for Delphi. It provides
visual components and objects allowing description and rendering
of 3D scenes in an easy, no-hassle, yet powerfull manner.
GLScene is not just an OpenGL wrapper or utility library, it
has grown to become a set of founding classes for a generic 3D
engine with Rapid Application Development in mind. GLScene allows
you to quickly design and render 3D scenes without having to
learn the intricacies of OpenGL, if you know how to design a
TForm, you'll easily master the basic operations of TGLScene. The
library comes with a set of demos showcasing the ease of use, and
demonstrating RAD wasn't done at the expense of CPU horsepower.
GLScene is released to the public as open-source under Mozilla Public Licence.
'nuff with the commercials, let's get down to the features :
GLScene Changes from v0.7 to v0.7.1
: (fixes release)
- Fixed nasty IDE bug : added objects would
be neither declared in source, nor properly recognised by
Delphi's IDE until open/close.
- Added TGLProxyObject : allows better &
easier sharing of ressources, adjusts its MasterObject
property and you've got a clone (no samples yet, quite
untested)
- Added support for categories of objects (objects
are now sorted in different submenus)
- TAsyncTimer in v0.7 was still using the
old code, this is now fixed
- Various fixes and enhancements, see file
headers for details (thanks Roger Cao, Mike Lischke,
Nelson Chu, Carlos A. Rivero, Gary Clark, James Burroughs...)
A mailing
list / message board for GLScene is now available, you can
subscribe here.
Work in progress, unofficial announcements, minor updates will be
posted there.
Feel free to use it for any kind of support requests/offers.
Other changes : see What was new. What is coming : see Planned features.
GLScene Available
Features: |
- Scene description
- hierarchical objects structure, with as many
objects as memory allows
- interactive scene management (numerous Delphi
experts)
- easy to use rotation and movement functions for
each object
- predefined objects (all standards from cube to
teapot to sprite), easily extendable
- structural object (dummy cube) for manageing
composite objects
- camera and light objects that can be used
anywhere in a scene objects hierarchy
- behaviour objects can be attached to objects for
animation purposes, easily extendable
- per-object special effects (before/after object
rendering and scene after-effects), easily
extendable
- support for particle systems, any object or
object structure can be a particle
- 3D Studio file import with automatic and precise
normal vector calculation (using the given
smoothing groups of the file) and texture
coordinate import
- MD2 file import with texture coordinates
- Materials
- easy to use, optimized, material object
- material library to share or reuse materials
- ambient, diffuse, emission, specular and
shininess support
- support of blending modes (transparency, additive...)
- alpha-channel auto-generation
- polymorphic image support for texturing (allows
many formats as well as
procedural textures), easily extendable
- more than 150 predefined colors like
clrCornflowerBlue or clrCoolCopper, easily
extendable
- Rendering
- automatically uses the hardware OpenGL driver if
available
- a well working camera model using focal length
and targeting
- multiple viewers for one or more scenes, easy
change of view through camera selection
- fog and depth-of-view support
- render to a file, a bitmap or to the printer in
any color and pixel resolution
- full screen support with dynamic resolution
changes
- Animation
- propagation of time progression events
- easily extendable Behaviours
- dynamic physics : inertia, acceleration, damping
and force application
- automatic, realtime scene cadenceing
- Interface
- easy-to-use function to determine picked objects
- helper functions for camera movements
- helper functions for picked object's translation
- Utilities
- optimized geometry functions and utilities (vector,
quaternion and matrix...)
- component to make full-featured screen-saver in a
few clicks
- precise frame speed determination
- asynchronous timer (multi-threaded)
- joystick support
Notes :
* Delphi 5 basicly
supports BMP, WMF, EMF, ICO and JPG, you can add support for GIF,
TIF, TGA, PSD and many more by including the GraphicEx library from Mike Lischke.
GLScene Planned
Features: (in no particular order, dunno yet which
ones will be actually worked on) |
Next updates will focus on all
structural aspects of GLScene, with v1.0 having all base classes
and structures defined and working (but few variations). Don't
ask for release dates or schedules, there are none, and if there
was one, RealLife (tm) would probably tear it apart ;).
- Never ending quest for EXE-size and memory
use reductions, faster geometry, faster OpenGL calls,
more demos...
- Enhanced, structured mesh objects (pre-requisite
for many things listed below)
- Multi-texturing, texture movements,
deformations and animations
- Set of built-in procedural textures (camera,
plasma, fire, sky, marble, wood...)
- Composite objects with automatic Delphi
IDE expert support (ala Poser4 morphs)
- Support for more vector file formats as
well as 3DS texture mapping (only coordinates are
imported now)
- Support for reflections and mirror effects
- Light maps, shadow maps
- Support for revolution objects (described
by a curve and an axis)
- Terrain and height-fields objects (outdoor
support), progressive fractal terrain refinement
- Buildings/Maze/City objects (indoor
support)
- Sample after-effects (lens-flares, rain,
snow...)
- Collision detection (fast ellipsoid,
precise polygon-level detection and ray-casting)
- More physics (gravity, tension, bouncing,
force-fields...)
- Skeletal animation, skinning, poseing
- Better support for Frame-based actor
animation (ala Quake/Quake II)
- Bezier and Nurbs (curves and surfaces)
- Trajectory following, terrain flyover,
"drop on floor"
- Volumetric fog
- Shadow casting using stencil buffer,
volumetric shadows
- "Automatic" tesselation
- Environmental audio (3D) sound support (maybe
through OpenAL if it reaches stability, or OpenML if it actually shows up)
- ....and many more (that may be implemented
sooner than those :)
GLScene Known Bugs:
(in no particular order) |
- When using behaviours, you must manually add GLBehaviours
to your "uses" clause (there may be a way to
notify Delphi's IDE that a particular unit is used, but I
do not know it...).
- GLScene crashes when a TGLSceneViewer is visible and
resolution is changed with "QuickRes" or the
Windows Display pannel.
- OpenGL library won't be unbinded after ending an
application from Delphi's debugger, causing some memory
loss under Win9x (no pb with NT).
- GLScene.WindowOptions ignores some of the options (I have
not really tested this code yet).
- Moving a camera's target, or a camera's parent will not
automatically update the TGLSceneViewer, maybe not really
a bug since all the ways I found around this would gobble
up zillions of cpu-cycles in complex scenes...
- Won't run on SGI's Windows software implementation
("opengl.dll").
OpenGL ICD drivers Known
Bugs: (known to me 8) |
- Micorsoft's NT4 software OpenGL won't honour some resize
requests, clinging to a 640x480 resolution
- 3Dfx ICD has at least one hard-coded break point (don't
worry if Delphi's debugger sometimes stops in the middle
of nowhere, just continue running the code, it won't
happen with a standalone EXE)
- 3Dfx ICD has a tendency to accumulate access-violations (and
not intercept them fast enough, don't worry if Delphi's
debugger sometimes stops with a "too much unhandled
access violations" message, just continue running
the code, it won't happen with a standalone EXE)
GLScene Changes from v0.6 to v0.7
:
- Added support for Behaviours (TGLBehaviours/TGLBehaviour)
in TGLBaseSceneObject, with accompanying IDE expert.
Behaviours are a stepping stone for more goodies to come
(particle systems, flyby, drop-on-floor, force-fields...).
- Added TGLParticles, the Particle System
component, with accompanying samples (in sprites/particles
and bench/whirlwind). Features visual-design, unlimited
particle count, automatic particle pool management,
parenting support (a particle can be a single object or a
structure that may contain any objects (including
particle systems)) and more.
- Added the first behaviour, "Simple
Inertia" (handles translation/rotation speed,
acceleration and damping) with its "torque"
demo.
- New utility component : TGLCadencer, a
step toward point-and-click only animation with GLScene (see
screen-saver sample: things move without a single
animation-related line of code in the saver's main form).
- New utility component : TScreenSaver (make
screen-savers in a snap!), comes with a full-featured
sample screen-saver with preview and GLScene-based config
dialog (the component can be used without using GLScene).
- New classes : TXCollection/TXCollectionItem
(can be used without GLScene) with IDE expert, similar to
VCL's TCollection but with polymorphism support (allows
items of varied classes, base class for TGLBehaviours/TGLBehaviour
and other goodies to come).
- Fixed TJoystick component, it should now
behave properly (at least for a 2 axis, 4 buttons stick).
Added a Joystick demo.
- Added support for effects (per object, pre-
or post- object rendering, scene after-effects), these
are subclasses of TGLBehaviour with added rendering
abilities. No samples, untested.
- TAsyncTimer is now based on the
ThreadTimer code (by Carlos Barbosa) as suggested by
Roger Cao.
- Various minor additions and fixes, see
file headers for details (thanks Uwe Raabe for quadrics
and memory fixes and Jens Treichler for spotlights vector
recalculation)
GLScene Changes from v0.5.0 to v0.6
: (in no particular order)
Note for users of previous versions :
the version released here has been altered quite heavily, most
classes and components are still here, but most have been renamed
or rearranged and this package is not an incremental improvement
(neither is it a complete rewrite) : projects designed with
previous versions won't compile with this one, and you'll
probably have to manually modify DFMs to make them work. However,
this version is more stable, faster, uses less memory and has
more to offer. And since previous versions won't be supported, it
is highly recommended to migrate your applications. Incremental
compatibility will be provided from this point on.
- Requires Delphi 5 (may compile
under D4, but experts make use of D5's TFrame)
- Fixed (all ?) crashes (most came from bugs
in experts and OpenGL12.pas, other buggy objects have
been deactivated)
- Added a bunch of demos (heavily commented,
tutorial-style)
- Added new experts (color editor, material
editor, material preview, vector editor, material library
picker)
- Added and optimized many Geometry function
(mainly through better parameters support)
- Changed GLScene main objects names so they
begin with "TGL"
- Significantly reduced dependencies, EXE
size is now vastly reduced for a bare-bones GLScene
application
- Massive optimization of what is stored in
the DFMs (smaller EXEs)
- Fixed texturing (PersistentImage), added
full-polymorphic texture image data support
- Vector file objects, Joystick support have
been moved to separate units
- Added "Target" to TGLCamera so
you can point your camera to a particular object, also
added utility functions for moving a camera around its
target
- New objects : TDummyCube (for use as
camera target or composite object handler), TSprite (a
"plane" that is always facing the camera, for
use in particle systems, special effects or doom-like 2D
monsters :)
- Added AbsolutePosition calculation
functions, and depth-sorting for blended objects
rendering
- TSpaceText now allows for low-quality 3D
text (reduced poly count)
- Added ability to save/load scene or
material library to a file
- Added Progress event chain
- ...and many more (see headers in pascal
files for more details)