GLScene: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: GLScene
| Old | New | Line | |
|---|---|---|---|
| 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 | + |   \ | |
| 84 | + |  | |
| 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 |
