4.4 |
Ü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
Ü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 | release date | changes from previous version |
---|---|---|
release 1 | 2006-07-25 | |
release 2 | 2006-08-13 | added TinyJpeg, hash classes |
release 3 | 2006-08-28 | next TinyJpeg version |
release 4 | 2006-09-21 | final TinyJpeg |
release 5 | 2006-10-13 | rewriting OpenGL related classes |
release 6 | 2006-11-17 | backup |
release 7 | 2006-12-27 | TinyJpeg now compilable under linux (template fix) |
release 8 | 2006-12-29 | added unicode file class |
release 9 | 2007-01-12 | minor unicode file class update |
release 10 | 2007-02-05 | port of OpenGL related classes for vs2005 |
release 11 | 2007-02-21 | added nv8800 series ("DirectX 10") functionality |
release 13 | 2007-05-16 | shader system improvements, fixed OpenGL state manager update bug |
release 14 | 2007-06-04 | minor bug fixes, removed obsolete classes |
release 15 | 2007-07-18 | new subpixel accurate font class, some modifications to OpenGL classes |
release 16 | 2007-08-12 | updated shader system (EXT_GPU_shader4, optimizations) |
release 17 | 2007-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 18 | 2008-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 18 | 2008-06-02 | fixed some bugs found in r18 |
release 19 | 2008-11-30 | running 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 20 | 2009-03-31 | running backup added couple of new classes fixed thread class to work properly under linux some fixes, as usual |
release 21 | 2012-05-24 | infinite überlameness, OpenGL ES 2.0. note this release was not meant as public release, there is still more work to do. |
release 22 | 2013-12-12 | some linux compatibility fixes, added type lists note this release was not meant as public release, there is still more work to do. |
release 23 | 2015-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. |
version | release date | file | release notes |
---|---|---|---|
release 1 | 2006-07-25 | uberlame_r1.zip | documentation not available |
release 2 | 2006-08-13 | uberlame_r2.zip | documentation not available |
release 3 | 2006-08-28 | uberlame_r3.zip | documentation not available |
release 4 | 2006-09-21 | uberlame_r4.zip | documentation not available |
release 5 | 2006-10-13 | uberlame_r5.zip | documentation not available |
release 6 | 2006-11-17 | uberlame_r6.zip | documentation not available |
release 7 | 2006-12-27 | uberlame_r7.zip | documentation not available |
release 8 | 2006-12-29 | uberlame_r8.zip | documentation not available |
release 9 | 2007-01-12 | uberlame_r9.zip | documentation not available |
release 10 | 2007-02-05 | uberlame_r10.zip | documentation not available |
release 11 | 2007-02-21 | uberlame_r11.zip | documentation not available |
release 13 | 2007-05-16 | uberlame_r13.zip | documentation not available |
release 14 | 2007-06-04 | uberlame_r14.zip | documentation not available |
release 16 | 2007-08-12 | uberlame_r16.zip | documentation not available |
release 17 | 2007-11-26 | uberlame_r17.zip | documentation not available |
release 18 | 2008-03-12 | uberlame_r18.zip | documentation not available |
LamePak2 | 2008-03-12 | lamepak2_r18.zip | LamePak2 utility (written against r18) |
release 18 | 2008-06-02 | uberlame_r18_fix.zip | fixed version of r18 |
release 19 | 2008-11-30 | uberlame_r19.zip | documentation not available |
release 20 | 2009-03-31 | uberlame_r20.zip | documentation not available |
release 21 | 2012-05-24 | uberlame_r21.zip | documentation not available |
release 22 | 2013-12-12 | uberlame_r22.zip | documentation not available |
release 23 | 2015-03-08 | uberlame_r23.zip | documentation not available |