Sign in Join
Wiki copytemporary

GLScene: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: GLScene

OldNewLine
1+### About
2+
3+GLScene is an OpenGL based 3D library. It was initially written for Delphi, now it is running in C++ Builder, Kylix, Delphi and Lazarus.
4+
5+Its main caracteristics are :
6+
7+Scene description
8+
9+- hierarchical objects structure, with as many objects as memory allows, easily extendable
10+- interactive scene management (numerous Delphi experts)
11+- easy to use rotation and movement functions for each object
12+- predefined objects (all standards from cube to teapot to sprite), easily extendable
13+- structural objects (dummy cube, proxy object) for manageing composite objects
14+- procedural objects (heightfield, revolution solids, pipes, tesselators...)
15+- support for 2D and 1D objects (sprites, lines with spline support) fully integrated
16+- HUD objects (sprites rendered in 2D coordinates)
17+- Utility objects (grids, skydome, arrows...)
18+- support classes for directly accessing OpenGL
19+- camera and light objects that can be used anywhere in a scene objects hierarchy
20+- behaviour objects can be attached to objects for animation purposes, easily extendable
21+- per-object special effects (before/after object rendering and scene after-effects), easily *extendable
22+- support for particle systems, any object or object structure can be a particle
23+- 3D Studio file import with automatic and precise normal vector calculation (using the given *smoothing groups of the file) and texture coordinate import
24+- Other imported formats : OBJ/OBJF, SMD, MD2, STL, TIN, PLY
25+
26+Materials
27+
28+- easy to use, optimized, material object
29+- material library to share and reuse materials
30+- ambient, diffuse, emission, specular and shininess support
31+- support of blending modes (transparency, additive...)
32+- alpha-channel auto-generation
33+- support for OpenGL texture formats, including compressed ones (DXT, S3TC etc.)
34+- generic plug-in shaders support
35+- High-level Cg shaders support classes
36+- polymorphic image support for texturing (allows many formats as well as procedural textures), easily extendable
37+- more than 150 predefined colors like clrCornflowerBlue or clrCoolCopper (easily extendable) in addition to standard colors and direct RGBA specifications
38+- easily to use texture movement and scaling properties, independently from texture coordinates
39+- 32 bits Bitmap support class
40+
41+Rendering
42+
43+- automatically uses the hardware OpenGL driver if available
44+- a well working camera model using focal length and targeting
45+- multiple viewers for one or more scenes, easy change of view through camera selection
46+- fog and depth-of-view support
47+- render to a file, a bitmap or to the printer in any color and pixel resolution
48+- full screen support with dynamic resolution changes
49+- reflections and mirror effects
50+- dynamic shadow casting
51+- high-performance scene-wide transparent particles system support
52+- automatic frustrum culling (hierarchical or per-object)
53+
54+Animation
55+
56+- propagation of time progression events
57+- skeletal animation (multiple bones per vertex)
58+- frame interpolation and morph targets
59+- easily extendable Behaviours
60+- dynamic physics : inertia, acceleration, damping and force application
61+- automatic, realtime scene cadenceing
62+
63+Interface
64+
65+- easy-to-use functions to determine picked objects
66+- helper functions for camera movements
67+- helper functions for picked object's translation
68+- helper functions for converting between screen and world coordinates, raycasting
69+
70+Utilities
71+
72+- optimized geometry functions and utilities (vector, quaternion and matrix...)
73+- cubic spline support functions and class
74+- mesh manipulation and optimization (stripification, vertex-cache awareness, etc.)
75+- component to make full-featured screen-saver in a few clicks
76+- precise frame speed determination
77+- asynchronous timer (multi-threaded)
78+- joystick support
79+- asynchronous keyboard access, keymap support
80+
81+### Screenshots
82+
83+![](/wiki-images/5/5c/Gl_effect.jpg) ![](/wiki-images/f/f5/Gl_cel.jpg) ![](/wiki-images/5/50/Gl_trinity.jpg)\
84+![](/wiki-images/4/49/Gl_ode.jpg)
85+
86+### Author
87+
88+Author: initially Mike Lischke\
89+at time maintained by Eric Grange\
90+LCL Port: Christian Ulrich
91+
92+### Download
93+
94+#### Forked
95+
96+A much newer version of GLScene exists [here](https://sourceforge.net/p/glscene/code/HEAD/tree/branches/GLSceneLCL/) (as of 2018-03-15 it's v1.6).
97+
98+#### Latest (v1.0.0.2)
99+
100+- A new snapshot release can be found at [Lazarus CCR Files page](https://sourceforge.net/projects/lazarus-ccr/files/GLScene/).
101+
102+This should be almost identical to the original cvs repository of today in terms of functionality and bugfixes, however, there are still some parts missing. There wont be a "Lazarus-with-GLScene-Installer" with this new release, unless someone else creates it. --Crossbuilder 20:16, 18 July 2007 (CEST)
103+
104+#### Outdated
105+
106+An older release (version 0.9.1.6) can be found on the [Lazarus CCR Files page](https://sourceforge.net/project/showfiles.php?group_id=92177&package_id=98986&release_id=364007) together with a lazarus installer with GLScene already in the Lazarus IDE and GLScene demoes. UPDATE: This is pretty old now. If possible, use the svn checkout (see below).
107+
108+### SVN
109+
110+you can checkout the actual source from\
111+<https://svn.freepascal.org/svn/fpcprojects/glscene/trunk/>\
112+The command would be:\
113+
114+ svn co https://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene
115+
116+This will download the trunk (main) repository to "glscene" dir to whereever you invoked the command from.
117+
118+In windows you can use clients like tortoise SVN and others.
119+
120+### Bug reporting
121+
122+[Bug Reporting/Featurerequest](https://bugs.freepascal.org/) Please select Project "Lazarus-ccr" and Category "glscene" for your reports. Thanks.
123+
124+### Change Log
125+
126+- 18.07.2007 Snapshot release version 1.0.0.2
127+ - adjusted some things, so it works with latest lazarus svn version
128+ - added object bitmaps for the SceneEditor
129+ - fixed another AV in SceneEditor
130+ - incorporated all patches and bugfixes from original glscene cvs repo like dynamic textures ..
131+- 13.06.2007 Snapshot release version 1.0.0.1
132+ - incorporated all patches and bugfixes from original glscene cvs repo
133+ - improved scene editor (crashes less, but still needs some love)\
134+ **Tip:** Save your project frequently ;-)
135+ - seperated mmsystem dependent stuff from generic sound support so e.g. FMOD is available in linux, too
136+ - many more ..
137+- 01.12.06 Added support for ODE, gtk2 and Cg shaders in Linux (ODE is limited to normal release, unsupported are cone, ccylinder and terrains)
138+- 10.08.05 Too many changes to post here see cvs history
139+- 16.07.05 GLScene 0.9.X Port
140+- look at GLScene Sourceforge Account for complete Changelog
141+
142+Status: Beta
143+
144+### Installation version 1.0.0.2
145+
146+**Requires fpc 2.1.4 or greater and lazarus 0.9.23 rev. 11348 or greater !!**
147+
148+- **extracting the sources**
149+ - ZIP:
150+ - in "lazarus/components/" folder execute "unzip glscene-1.0.0.2.zip"\
151+ This will create the lazarus/components/glscene/ folder
152+ - SVN:
153+ - in "lazarus/components/" folder execute
154+ svn co https://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene
155+
156+ This will create the lazarus/componets/glscene/ folder
157+ - Tortoise SVN: add the folder "glscene" manually so you have lazarus/components/glscene. Then right-click onto new folder and choose "SVN Checkout...". At field "URL of repository" add
158+ https://svn.freepascal.org/svn/fpcprojects/glscene/trunk
159+
160+ Confirm by "OK".
161+
162+- **Finish the installation:**
163+ - copy "lazarus/components/glscene/globallinks/*.lpl" to "lazarus/packager/globallinks/"
164+ - start lazarus
165+ - select "Configure installed packages ..." from the "Components" menu
166+ - select "glscenelazarus" from the "Available packages" list
167+ - click "Install selection" button
168+ - click "Save and rebuild IDE" button
169+ - ATTENTION: There may occur an error that package "jpegforlazarus" is not found. If so do the following:
170+ - Components --\> Open loaded package...
171+ - Choose "glscenelazarus" (Version 1.0.0.3) and click "Open..."
172+ - In the following list go down to "Required Packages" and remove dependency from "jpegfromlazarus".
173+ - Look for unit "jpeg" in folder /lazarus/components/glscene/Source/base and replace "LazJPEG" (in uses clause) by "LazJPG" (from package ImagesForLazarus).
174+ - Save and repeat last 4 steps again.
175+ - HINT: You should have installed package "ImagesForLazarus" (the same way as described for "glscenelazarus" package).
176+ - repeat the last 4 steps for the other packages you want to use.
177+ - Note: glsceneode and glscenecgshader need their respective libs on the system during installation!
178+ - **Note:** you can also try to select and install all packages in one go. However, I prefer to do things step by step, so I see where it fails, if it fails ;)
179+ - **Install "glscenelazarus" - mistakes:** (only needed when using glscene-1.0.0.2.zip, in svn these are already fixed)
180+ - To correct the unit GLLCLViewer: procedure TGLSceneViewer.CreateParams(var Params: TCreateParams); - at procedure TGLSceneViewerLCL.CreateParams(var Params: TCreateParams);
181+ - To correct the unit GLLCLViewer: procedure TGLSceneViewer.EraseBackground(DC: HDC); - at procedure TGLSceneViewerLCL.EraseBackground(DC: HDC);
182+ - To correct the unit GLLCLFullscreenViewer: Change "RegisterClasses(\[TGLSceneViewer, TGLFullScreenViewer\]);" to "RegisterClasses(\[TGLFullScreenViewer\]);"
183+
184+- **List of packages:**
185+ - **glscenelazarus** The main package.
186+ - **glscenecgshader** Cg Shader components
187+ - **glsceneode** ODE components
188+ - **glss_fmodlaz** FMOD component
189+ - **gls_winonly** Windows only, contains sound support over mmsystem, BASS support and GLScreenSaver component
190+
191+- **Сompilation "demo" - mistakes:**
192+ - If not found class - TGLSceneViewer: To correct the uses (demo): GLLCLViewer - at GLViewer
193+
194+### Installation version 0.9.6.1
195+
196+- Create the directory lazarus\components\GLScene
197+- On this directory, unzip the files from the zip file
198+- Open lazarus
199+- Open the package glscenelazarus.lpk with Component/Open package file (.lpk) from lazarus\components\glscene\Lazarus
200+- (Click on Compile is only necessary, if you don't want to install the component into the IDE)
201+- Click on Install
202+- Repeat these steps (open .lpk, click install) for the other packages you want to use. Note: these additional packages need additional libs (fmod, ode, Cg).
203+ - glscenecgshader.lpk : Cg shaders (only with NVidia cards?)
204+ - glsceneode.lpk : support for ode lib
205+ - glsss_fmodlaz.lpk : support for fmod lib
206+ - gls_winonly.lpk : this can be installed on windows only. Contains screensaver stuff as well as support for BASS lib.
207+
208+Hint: sometimes an Error "GLGraphics not found" occurs. Don't worry, just do Tools-\>Build Lazarus again and it should be ok.
209+
210+A full install of Lazarus with GLScene already in the IDE is available as [binary win32 release](https://sourceforge.net/project/showfiles.php?group_id=92177&package_id=185641&release_id=405739).
211+
212+Just a warning for (new) Linux users: GLScene in its current state is not working "out of the box" (lots of modifications/additions needed). UPDATE: this is not true anymore. glscene for lazarus is pretty up-to-date and most things work good right out of the box for windows as well as for linux.
213+
214+As of latest trunk version (see svn above) the linux version is working well. Some demos (about 20%) are still broken but the majority of glscene is now working. We're also moving towards making it work in other Unix platforms like FreeBSD.
215+
216+The missing/nonworking parts on non-windows are: glKeyboard (uses winapi, but is not required mostly), glSound(which uses mm, we need to use openal or somesuch)
217+
218+A [[Lazarus- Game Developers Edition|fully featured windows installer]] is planned.
219+
220+### Help
221+
222+- Can be found at [Main GLScene Page](http://glscene.sourceforge.net/wikka/)
223+- join \#glscene channel at freenode.net
224+
225+---
226+*From the Free Pascal wiki, page "GLScene", as it stood on 2018-03-15 after a change by Shebuka, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
227+Category: Components
228+Category: Game Development
229+Category: Graphics
230+Category: Multimedia

Back to history