Boost logo

Boost :

From: Michael Marcin (mmarcin_at_[hidden])
Date: 2006-10-25 21:26:59


ali fareed wrote:
> Hello,
>
> Are there any plans in the pipeline to add a 3d graphics library to
> boost?
> If there was an available implementation would something like this be
> considered? I'm talking about a 3d graphics api wrapper probably
> around OpenGL in the style of boost. Functionality can include the
> common subset found in most other rendering APIs (like Direc3D and
> OpenGL)
>

I wonder how such an interface would look.

I would be amazingly nice to have an interface to which one could conform
backends to in an efficient manner.

The backends I would love to see supported are:

OpenGL 1.5 / 2.0
Direct3D 8.1 / 9 / 10, XBOX, XBOX360
OpenGL|ES 1.0 / 1.1 / 2.0
PSGL

Of course these libraries have wildly different interfaces, implementations,
feature sets etc.

Almost all existing 3d graphics abstractions are implemented as rendering
engine frameworks. A framework is very hard to buy into and using multiple
frameworks together is next to impossible. A toolkit approach ala ASIO
would be preferred.

Anyways I'd love a discussion about this idea.

I'm currently stuck implementing yet another abstraction layer for a subset
of the backends I mentioned above. And while the work is interesting it was
much more interesting the first time I had to do it and I'd rather be
working on the project.

> On the same note, how about an audio library? load audio files, play
> audio files, etc...
>

Just finished yet another audio wrapper to run on top of several audio
backends.
For most people I suppose FMOD suffices but FMOD doesn't support every
platform so we're back to rolling our own interface wrapper for various
implementations because FMOD is closed and commercial.

> I can see some problems, the main one (AFAIK) being supporting all the
> different window frameworks. If this can be worked around somehow (it
> could if something like gtk or wxWidgets was added to boost)...
>

Most window frameworks are very hard integrate into existing applications in
my experience and are generally diffcult to port to unsupported platforms.

> Comments?

Creating interfaces like this seems like a huge beast to tackle but an
important one as much wasted effort is being put into reinventing these
wheels. I think it is important to create core interfaces that can handle
the simple tasks (i.e draw a triangle list with a texture applied, or play a
mono looping sound) that can be readily ported to new backends without
having to get a whole mess of additional functionality working from the get
go.

- Michael Marcin


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk