What is your best/favorite library(ies)?

A place for Ogre users to discuss non-Ogre subjects with friends from the community.
Post Reply
User avatar
madmarx
OGRE Expert User
OGRE Expert User
Posts: 1671
Joined: Mon Jan 21, 2008 10:26 pm
x 51

What is your best/favorite library(ies)?

Post by madmarx »

Hi,

Apart from Ogre of course ;-), what lib did you use that make you say :" this is so well done, that it's even a form of beauty ! ".

Personnaly, I found the C++ dlib on sourceforge 1 month ago, and I can say it now : "whow! it is the best library I have ever use!".

-> stunning coding rules
-> even more stunning performances (vector, list, map & so on quickier than the stl)
-> ultra quick compilation time
-> you can choose different implementation of the same tool, with clearly described algorithms
-> simplier to code than the stl (no need copy constructor & so on)
-> too much !

I now prefer it by far from stl & boost.

And you, what are your favorite libs?

Pierre
User avatar
betajaen
OGRE Moderator
OGRE Moderator
Posts: 3447
Joined: Mon Jul 18, 2005 4:15 pm
Location: Wales, UK
x 58
Contact:

Post by betajaen »

I tend to use my own storage/container classes than the STL versions. But recently I discovered tinytl (Tiny Template Library) and Loki. Both are alternatives to boost and have opened my eyes more on template meta programming. I wouldn't use either in my own programs, but I have been studying them in the precious spare time I have. To implement my own version of Boost Parameters.

Of course my favourite libraries are Ogre, NxOgre (of course), PhysX, json-cpp, tinyxml and a few others.
User avatar
Chris Jones
Lich
Posts: 1742
Joined: Tue Apr 05, 2005 1:11 pm
Location: Gosport, South England
x 1

Post by Chris Jones »

we moved OGE from boost to POCO and Intels Threading Building Blocks. POCO is really nice to use, compiles very fast (compared to boost) and has a lot of very useful classes. TBB is great for multithreading of course but i havent used it extensively yet.
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18
Contact:

Re: What is your best/favorite library(ies)?

Post by PolyVox »

madmarx wrote:Personnaly, I found the C++ dlib on sourceforge 1 month ago, and I can say it now : "whow! it is the best library I have ever use!".
That does look like a very good library - lots of useful features. I'm particularly curious what the GUI component is like? Presumably fairly minimul, but I don't see screenshots anywhere. I'm interested because not many general C++ libraries have a GUI component.

POCO also looks very cool and provides useful things that Boost doesn't (XML, logging, etc). I just wish I had time to try all these out!

I guess my favourite C++ lib would be Qt - awesome for GUI's and has loads of other stuff built in as well. It's just a complete development platform.
User avatar
madmarx
OGRE Expert User
OGRE Expert User
Posts: 1671
Joined: Mon Jan 21, 2008 10:26 pm
x 51

Post by madmarx »

@ polyvox
well I have not yet used dlib GUI. And I don't plane to either, because I don't need/like to do/use GUI. (even at my job, I just use ogre).

@everyone
TTL : I really like some of its features.

Poco : interesting, reading it reminds me java. Strangely, I am never very confident when I see such big libraries. I prefer "little wild things" with cunning strategies (like pantheios logging library ).
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18
Contact:

Post by PolyVox »

madmarx wrote:...like pantheios logging library...
Wow, what's your trick?! A while ago I spent ages looking for a small, fast, powerful logging library and didn't find much. But that one looks great!
User avatar
madmarx
OGRE Expert User
OGRE Expert User
Posts: 1671
Joined: Mon Jan 21, 2008 10:26 pm
x 51

Post by madmarx »

@polyvox
1/ it's part my job. I must decide which tools my guys will use.
2/ If I look for something, I ask the most experts : instead of google, ask people. It is the best source. For example, I already knew Loki because of Andrei Alexandrescu (who also wrote the boost mpl). Loki functionnalities were later injected in boost.
Another way is to ask on a forum : "what is your favorite lib?". 8)
other example : I know the dlib because of the vote on sourceforge. - I checked some source code, and it was quickly obvious that this guy was even better than me!-

Personnaly I also liked some of the AReVi's macro (but not the 3D engin itself). I am also waiting for the fastformat library to be released. I tried the sigslot and it was cool, but I haven't use it a lot (but it was made by the NASA, so I can trust it).

@whowants
After digging further I can say that I like things like dlib and loki, but not like poco. There are some clear errors in the way it's thought. (sorry but I will never trust people which pretend that a code with handle exception is better than a code that does not use exception. It's like they are not even aware of the B method and of what real quality means, which is tragic).
User avatar
Kojack
OGRE Moderator
OGRE Moderator
Posts: 7157
Joined: Sun Jan 25, 2004 7:35 am
Location: Brisbane, Australia
x 538

Post by Kojack »

One that I've found useful over the years is Pixel Toaster. It's a tiny and highly specialised library for easy cross platform framebuffer access.
It lets you work directly with 32 bit integer or 96 bit floating point pixels, regardless of what your hardware can really handle. All it does is handle opening, closing and updating a framebuffer (full screen or windowed) on linux, freebsd, mac and windows, plus receive mouse and keyboard input.

Example program:

Code: Select all

const int width = 320;
const int height = 240;

Display display( "Example", width, height );

vector<Pixel> pixels( width, height );

while ( display.open() )
{
    const int x = rand() % width;
    const int y = rand() % height;

    pixels[x+y*width].b = 1.0f;

    display.update( pixels );
}
That opens a 320x240 floating point window and makes random pixels blue until you close it.


A handy and pretty unique library is Microsoft Research's Detours. It's purpose is to bypass functions in a dll with replacement functions in another dll. The less nice use is things like game cheats (you can intercept any opengl function call and do your own code instead, like force transparency or full lighting), but it has legitimate uses too. Currently I'm using it to make a network problem simulator. It replaces the upd socket functions in winsock with new ones which create fake packet loss, corruption, duplicates, low bandwidth, high pings, etc. So I can test network code on a lan as if it's really running on a really crappy network.
No changes to the main code are needed, all the detour code is built into a seperate dll and can be injected either when a program starts, or even into an already running process.

There's a lot of cool debugging stuff you can do with it. It can even bypass system dlls, so you could replace the MessageBox function in any executable with logging to a file instead, or do something fun with the Sleep function.
User avatar
Klaim
Old One
Posts: 2565
Joined: Sun Sep 11, 2005 1:04 am
Location: Paris, France
x 56
Contact:

Post by Klaim »

About logging in boost, there is a lib that have been reviewed and rejected for minor improvement (that mean that they wanted some modifications before putting it in boost officially, but the lib was good).
The lib have been reworked since and is back in the review stack of boost.org

You can try it it's available there : http://torjo.com/log2/index.html

It seem verry flexible and useful, but i don't have time to try it in my projects as i've my own minimal solution working fine for what i do. The performance of this lib is not clear as (as always) it depends a lot of what feature you use, but there is a profiler inside to help you see the logging performance.
User avatar
madmarx
OGRE Expert User
OGRE Expert User
Posts: 1671
Joined: Mon Jan 21, 2008 10:26 pm
x 51

Post by madmarx »

Kojack has got 2 winning tickets! :D thanks for sharing knowledge!
joeld
Gnoblar
Posts: 4
Joined: Mon Jun 09, 2008 6:04 pm

Post by joeld »

Wow.. Great thread. I haven't heard of most of these and they all look useful.

I'll add:
ImgDebug
http://billbaxter.com/projects/imdebug/

It's like printf, but for image data.
User avatar
Red5_StandingBy
Greenskin
Posts: 109
Joined: Mon Jun 26, 2006 1:06 pm
Location: Turkey

Post by Red5_StandingBy »

I am an ACE fan:
http://www.cs.wustl.edu/~schmidt/ACE.html

Very stable, cross-platform, users' list is impressive. But it is somewhat heavyweight for game development.
User avatar
lonewolff
Ogre Magi
Posts: 1207
Joined: Wed Dec 28, 2005 12:58 am
x 6

Post by lonewolff »

For some reason, I have been hooked on Winsock and BSD Sockets for the past few years.

I think it is the love of being able write software that can communicate to someone else anywhere in the world. 8)
User avatar
Brocan
Orc
Posts: 441
Joined: Tue Aug 01, 2006 1:43 am
Location: Spain!!
x 8

Post by Brocan »

how about a xml library easy to use? i have looked at tinyxml but it doesn't link in my app :(
thbusch
Gnoblar
Posts: 14
Joined: Fri Sep 08, 2006 9:42 am
Location: Thüringen/Germany
Contact:

Post by thbusch »

Gtkmm, because building good tools is extremely important. It is by far the easiest to use, best designed cross-platform gui lib i know, outperforms wxWidgets in many, many aspects if you ask me.
/Thomas
Firecracker
Halfling
Posts: 42
Joined: Fri Oct 07, 2005 9:47 am

Post by Firecracker »

madmarx wrote:@ polyvox
well I have not yet used dlib GUI. And I don't plane to either, because I don't need/like to do/use GUI. (even at my job, I just use ogre).

@everyone
TTL : I really like some of its features.

Poco : interesting, reading it reminds me java. Strangely, I am never very confident when I see such big libraries. I prefer "little wild things" with cunning strategies (like pantheios logging library ).
I googled pantheios logging library and Wow, just wow. It just looks so simple and elegant to use. I hacked togeather my own simple logging solution a while back, but when I have some free time to work on my hobby project I am so swapping it out for this. Thanks !
Post Reply