[SDL] OpenML, SDL, OpenAL, DirectX, OpenGL

David Olofson david.olofson at reologica.se
Fri Oct 5 15:44:01 PDT 2001


On Friday 05 October 2001 22:43, James Monteath wrote:
> 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 -'




More information about the SDL mailing list