ÜberLame framework

&Uml;berLame SGI

ÜberLame is an extreme programming framework, written in C ++. The main focus was on quick application prototyping (You need e.g. a web-enabled service? It will take about 30 minutes to implement it with ÜberLame) and on compatibility (only basic C ++ features are used).

It's still under heavy development and the interface tends to change from time to time (the changes are seldom, always documented and a great care is taken so that the old code either works without crashing at run time, or it does not compile, requiring programmer attention).

There are convenient wrapper classes for OpenGL / OpenGL ES: contexts, extensions, shaders, textures, buffer objects (vertex / pixel / frame) and more.

Support for GPGPU using CUDA / OpenCL is naturally included (also, there is an OpenCL emulator of CUDA, enabling you to make CUDA code work on non-NVIDIA hardware with minimal effort).

And there are some geometry / modelling tools, 3ds importer, os independent socket class, os independent thread class, along with the basic synchronization primitives, HTTP client / server, some image processing functions, fast XML parser, data compression functions, fast implementation of some common hash functions and many more.

ÜberLame can be compiled on Windows using Visual Studio, or on linux / mac using g++ (with -ansi -W -Wall -pedantic, if you need threads, throw in -pthread for the link step). It is compatible with the new x64 machines (and even compiles without warnings, mostly) and can run on Android phones as native code. Visual Studio sometimes warns about using "unsafe" CRT functions, but there was much effort to use these in a safe way so it's ok.

status: functional, under development
language: C++
os: win / win ce / linux / android / os x

Notes on basic usage

ÜberLame is usually not compiled as static library (.lib / .o) in my projects, instead it resides in UberLame_src directory in the same path as my other projects. Including ÜberLame is therefore done by #include "../UberLame_src/SomeFile.h" (note that it also works if you have your source code anywhere else and you add path to UberLame_src to your include paths). The ÜberLame files that are required for any particular project to work are simply compiled alongside with it (but that doesn't mean it is not possible to make a static or even a dynamic library). Two files that should always be included at the beginning of every file are NewFix.h (fixes behavior of operator new in Visual Studio, no effect in linux) and CallStack.h (debugging functionality), in this order.

Note that ÜberLame is not your typical library. It's a collection of minimal standalone useful classes, encompassing a wide spectrum of functionality. You may want to modify the source code to better suit your needs. In fact, you are hereby encouraged to. Also, thanks to the general simplicity of the source code and the amount of documentation comments, it's really easy.

For sample use of ÜberLame, see some projects in wild stuff section.


ÜberLame source code is free (as in free beer). You can do whatever you want with it. There is, however, no guarantee of usefulness, merchantibility, sanity or safety. The autor is not responsible / liable for any damage or loss.

version history

versionrelease datechanges from previous version
release 12006-07-25 
release 22006-08-13added TinyJpeg, hash classes
release 32006-08-28next TinyJpeg version
release 42006-09-21final TinyJpeg
release 52006-10-13rewriting OpenGL related classes
release 62006-11-17backup
release 72006-12-27TinyJpeg now compilable under linux (template fix)
release 82006-12-29added unicode file class
release 92007-01-12minor unicode file class update
release 102007-02-05port of OpenGL related classes for vs2005
release 112007-02-21added nv8800 series ("DirectX 10") functionality
release 132007-05-16shader system improvements, fixed OpenGL state manager update bug
release 142007-06-04minor bug fixes, removed obsolete classes
release 152007-07-18new subpixel accurate font class, some modifications to OpenGL classes
release 162007-08-12updated shader system (EXT_GPU_shader4, optimizations)
release 172007-11-26 improved vector and matrix classes,
fixed errors with FBO's rendering to 3D textures (in unbinding),
improved shader binds (faster uniform loading, grouping, asm level tuned),
OpenGL state guard supports archaic hardware (OpenGL 1.1)
now we're linux compatible (except for win32-only dialogs)
release 182008-03-11 fixed some filesystem class issues under linux,
improved jpeg and tga codecs a little bit,
added header for standard integer types,
there's a new (portable, of course) thread class,
ÜberLame now have it's own compressed format - LamePak2,
added EXT_geometry_shader4 functionality to shader system,
optimized framebuffer-related code
release 182008-06-02fixed some bugs found in r18
release 192008-11-30running backup
added some code still under development (linux people, don't hate me)
added XML parser (twice as fast as Tiny XML)
further improvements to Jpeg codec
lots of fixes
release 202009-03-31running backup
added couple of new classes
fixed thread class to work properly under linux
some fixes, as usual
release 212012-05-24infinite überlameness, OpenGL ES 2.0.
note this release was not meant as public release, there is still more work to do.
release 222013-12-12some linux compatibility fixes, added type lists
note this release was not meant as public release, there is still more work to do.
release 232015-03-08 added adaptive arbitrary precision arithmetics, Kochanek-Bartels quaternion splines, improved compression routines and likely lots of other stuff
note this release was not meant as public release, there is still more work to do.
some of the new modules were not tested in linux.


versionrelease datefilerelease notes
release 12006-07-25uberlame_r1.zipdocumentation not available
release 22006-08-13uberlame_r2.zipdocumentation not available
release 32006-08-28uberlame_r3.zipdocumentation not available
release 42006-09-21uberlame_r4.zipdocumentation not available
release 52006-10-13uberlame_r5.zipdocumentation not available
release 62006-11-17uberlame_r6.zipdocumentation not available
release 72006-12-27uberlame_r7.zipdocumentation not available
release 82006-12-29uberlame_r8.zipdocumentation not available
release 92007-01-12uberlame_r9.zipdocumentation not available
release 102007-02-05uberlame_r10.zipdocumentation not available
release 112007-02-21uberlame_r11.zipdocumentation not available
release 132007-05-16uberlame_r13.zipdocumentation not available
release 142007-06-04uberlame_r14.zipdocumentation not available
release 162007-08-12uberlame_r16.zipdocumentation not available
release 172007-11-26uberlame_r17.zipdocumentation not available
release 182008-03-12uberlame_r18.zipdocumentation not available
LamePak22008-03-12lamepak2_r18.zipLamePak2 utility (written against r18)
release 182008-06-02uberlame_r18_fix.zipfixed version of r18
release 192008-11-30uberlame_r19.zipdocumentation not available
release 202009-03-31uberlame_r20.zipdocumentation not available
release 212012-05-24uberlame_r21.zipdocumentation not available
release 222013-12-12uberlame_r22.zipdocumentation not available
release 232015-03-08uberlame_r23.zipdocumentation not available