GLScene - OpenGL for Delphi & C++Builder

OpenGL Library for Delphi & C++Builder,
maintained by GLSteam,
based on Eric Grange and Mike Lischke's GLScene.

unique hits since 13/04/00
OpenGL Logo Delphi Open Source Logo
SourceForge Logo 3DNow Logo
News Features History Bugtracker / Docs / Help Community Gallery FAQ Download Links

Demos Gallery Users Gallery

These are a few screenshots of GLScene in action, taken from the small samples included with GLScene.
Only a small number of these samples is showcased on this page.

'Archipelago' is one of the advanced demos of GLScene ('AdvDemos' in the Samples), showcasing rendering of terrain with large textures (64 MB in the highest resolution), animated water surface and a steerable sailship with its dynamic wake.

'Earth' is an experiment in atmospheric rendering: the atmosphere is rendered around a blue planet, using CPU-side raytracing to determine intensity and penumbra. By picking carefully selected samples for the raytracing, it can be done at a negligible CPU cost. The earth surface itself uses the NASA 'Blue Marble' texture (day and night, smoothly interpolated at render-time), Clementine mission data for the moon, and Yale and Hipparcos databases for the stars. An optional high-resolution dataset can be downloaded.

Intensity Mesh
This is a basic demonstration of how you can use one-dimensional textures to easily represent surface intensity data (here Von Mises stress on a tower for electric lines). A "palette" texture can be used with discrete colors (as in the screenshot) or with continuous color for a smoother aspect, depending on your representation needs.

The Ball
A mini-game used as advanced demo: by inclining the game board with the mouse, you have to get the ball rolling where it should, avoiding obstacles, falls and triggering doors. Not many levels have been designed yet ;)
The game features shadows and reflections, ODE for the game physics, and a mini-game engine aimed at showing how you can create game level objects, triggers and structures dynamically.

A screensaver-demo introduced in the end of 2002, displays a countdown to christmas with a few mini-events happening around christmas night. Makes use of the shadow plane, flare and fire effects.

Mesh Subdivision
GLScene includes several low-level mesh-manipulation algorithms, including subdivision (smooth, flat and intermediate steps). The "subdivide" demo shows its use in subdividing a QuakeII model and all its morph targets (animation frames). The demo also makes use of more generic purpose algorithms like fast construction of optimized vertex indices lists (no duplicates) and vertex-cache ordering optimization for TnL capable hardware.

Octree collision detection
Octree-optimized collision detection is supported in GLScene (thanks to Robert Hayes). The screenshot is taken from a demo in which a sphere bounces around in a polygon-rich environment (a 3DS mesh). Other demos cover raycasting.
If you're interested in collision-detection, be sure to check Robert's articles at Gone Gold Code Corner section for some insight (very easy to follow, you won't get draught in a sea of maths).

Spiral - PFX Demos
This is a screenshot from the "spiral" demo, showcasing the use of the new "PFX" (Particle FX) architecture in GLScene. The particle systems can spread the whole scene (automatic, high-performance depth-sorting), manage thousandths of particles and support all kinds of particle transparency modes.
A simple extension mechanism allows to easily implement new particle styles or dynamics.

Cube Maps
This screenshots are taken straight from environment cube mapping demos in GLScene. The one to the left uses cube maps dynamically generated at runtime, the one to the right uses a static cube map. Using and generating cube maps is as straightforward as using or generating any other texture in GLScene, just ask for it.

Mirror and Reflections
The mirror component is based on the stenciling technique outlined by Mark J. Kilgard, with improvements to allow correct rendering in a complex scene (mirror plane clipping and mirror area ZBuffer clearing)... at the expense of framerate (especially on T&L hardware).
It is possible to specify which objects will reflect, and which won't, have objects in front and behind the mirror, as well as objects that go through the mirror.

Dynamic Shadows
This demo by René Lindsay illustrates the use of zBuffer-based shadow maps:

Any visible object casts shadows onto any other objects, and even onto itself. The shadows are NOT pre-calculated. They are dynamically calculated, in Real-time. So, when an object is moved, or animated, its shadow moves with it.
I did NOT use GeForce extentions, so it will work on older Graphics controllers.

Screenshot is from a slow TNT2

GLScene has some mesh manipulation utilities, including a stripification tool. Rather than going into lengthy details, I'll point you to this nice article by Tom Nuydens.
The algorithm used is far from the best, but it is compact, reasonnably fast and is enough to triple the fps rating on the Stanford Bunny (3.9 MB) for a GF2 (taking less than a second on a 1GHz CPU, starting from a raw, non-indexed vertex data set). Non-T&L hardware will not benefit much from stripping (if at all).

Source, exe and triceratops mesh: (363 kb)

Skeletal Animation
The skeletal animation sample (early beta shots here, taken on the 3DFx board @16bpp) uses and animates a custom Half-Life model (TRINITYRage by A.u.s.t.i.n. and Neal 'Guplik' Corbett).

GLScene skeletal code supports vertex weighing and blending (multiple morphs and skeletal frames simultaneously).
Better screenshots coming, when the sample will have been enhanced a little...

Two shots from the ThorFX demo by René Lindsay.
This effect can simulate electric arcs, neons, laser and more. As visible on the shot to the right, the effect can be made to follow a formula/path.
The shot to the left does not make justice to the animated nature of the electric arcs ;)

This screenshots were taken from two of the animated demos for the FireFX special effect. Simulating static fire, rings, trails, explosions, wind etc. are possible. Particle color can be adjusted, allowing for smoke, magic effects and more.

The default particle being rendered with shaded triangles, allowing to reach theoretical fillrate on T&L boards.

Screen savers
One of the utility components of GLScene makes turning your basic Delphi project into a full-blown screen-saver easy.

Just drop the component on your main saver form, et voila, it will work as your screen-saver and preview screenie.

Rotation Solid - pawn
Rotation solid, like in these shots taken from the "Pawn" sample, support spline and start/stop polygon (automatically tessellated) among other refinements. Both shots use the same base curve, defined at design-time within Delphi.

You can load-in MD2 files (Quake II) and animate them (frame-interpolation supported). A variety of animation modes is provided (playonce, loop, bounce...).
Generic morph-target support allow you to use animation and frame-interpolation for other meshes too.

Note : the framerate is VSync limited on the screenshot, you can expect 600+ FPS with VSync off on a K7-500 + GeForce SDR

z = f(x, y)
The THeightField component is used in this sample plotting of a f(x, y) function. The surface is automatically tessellated, all you need to do is define the extents, the resolution and to calculate z value in an event.

Texture mapping and per-vertex coloring is possible too with heightfield.

The classic teapot is available in GLScene. This shot is taken from the camera movement sample, at design-time.
This demo showcases how to move the camera around an object, zoom/unzoom with a wheelmouse and drag an object with the mouse.