Hi,
I am just starting to learn Media API’s for Linux and other OS. I
wanted to know which API to use.
What do you want do do?
I searched the internet for a couple of hours and could not find any
information that can compare these API’s.
I don’t know of any single place where you’d find something like that,
but here’s some basic info, along with common opinions:
OpenAL: 3D audio "rendering". OpenGL style API, which is
implemented on the most popular platforms. (Don't
know what people in general think, and I don't use
it myself.)
OpenGL: Pretty nice, and available on pretty much anything
that can do 3D. (If nothing else, there's at least
software Mesa.) Many prefer this to Direct3D not
only because it's portable, but also because they
find the Direct3D API messy and constantly changing.
Drivers for this API are often slower than those for
DirectX, but
Direct3D:
Probably the most popular 3D API on Windows - but
be warned; you'll probably never see it running on
anything but Windows! It has two "modes"; immediate
and retained. The former is lower level than OpenGL,
and is basically a rasterizing API for 3D engines.
Immediate mode is higher level than OpenGL, dog
slow (or so they say...), and *is* a 3D engine,
more than it is an API around which you would build
one. Drivers for this API are often faster and more
up to date than OpenGL drivers for the same
hardware, especially for low end cards.
DirectDraw:
The 2D rendering part of DirectX. Supports setting up
fullscreen video modes and direct access windows, and
accelerated blits, including color key blits. Alpha
blending is not supported before DirectX 8.0. It's a
very, very low level API, and doesn't wrap the
differences between windowed and fullscreen mode,
back buffer handling and other "messy" stuff.
Glide: AFAIK, a low level rasterizing API. It's implemented
only by 3dfx drivers (and some more or less dodgy
wrappers...), but used to deliver superior
performance and control, compared to OpenGL and
Direct3D. IMHO, forget about this one, unless you're
going to build custom arcade machines using 3dfx
hardware or something...
OpenML: Cover's everything, looks nice, but where's the code?
SDL: Somewhat like OpenML in theory, but much simler,
and much more *real*! It wraps various other APIs
(it's not a driver framework) and handles input
(keyboard, joystick, mouse etc), audio output, video
output, threads and more. Can set up display contexts
for OpenGL rendering. It still has some minor issues,
but most of them are totally irrelevant to games.
Never heard of a user not liking this one... :-)
What is the impact of OpenML to other existing API’s.
AFAIK, none whatsoever, so far.
Looks great in theory, though; the standard is open, and covers pretty
much every aspect of audio, video, graphics and other multimedia, and
even supports proper synchronization of all kinds of devices. (Meanwhile,
most drivers can’t even do retrace sync’ed pageflipping… heh)
Anyway, I’m sticking with SDL + OpenGL for now, and I don’t expect that
to change for a good while. (By the time SDL 1.3 gets usable, there might
be no reason whatsoever to use other APIs.
//David Olofson — Programmer, Reologica Instruments AB
.- M A I A -------------------------------------------------.
| Multimedia Application Integration Architecture |
| A Free/Open Source Plugin API for Professional Multimedia |
----------------------------> http://www.linuxdj.com/maia -' .- David Olofson -------------------------------------------. | Audio Hacker - Open Source Advocate - Singer - Songwriter |
-------------------------------------> http://olofson.net -'On Friday 05 October 2001 22:43, James Monteath wrote: