SDL 2.0 Release Improves 2D/3D Rendering, Better Audio & New Features
An anonymous reader writes "Simple DirectMedia Layer 2.0 has finally been released. The cross-platform multimedia layer used by hundreds of cross-platform games has seen its first major release in years. The SDL 2.0 release has many new features including GL3 and OpenGL ES rendering support, a new 2D rendering API, better full-screen / multi-window support, multiple input support, Android and iOS support, power management, and other new functionality. SDL 2.0 can be downloaded from libsdl.org."
With SDL 1.2, if there was a bug on SDL... or if in need to run the game on the new directfb/wayland/whatever frontend, updating SDL was enough.
With SDL 2 linked statically against some closed game... not so much.
Wow, reading /. the last couple of days, it amazes me that opensource development can still happen without a successful kickstarter project!
The (weak) copyleft license of SDL also meant that games couldn't be recompiled for distribution on game consoles. This meant that despite SDL's support for two or more joysticks, it wasn't very practical to make a game that uses them due to the smaller average PC monitor size. Some people have a home theater PC, I'll admit, but very few, and probably not enough to make a major-label game viable.
Thank you to everyone who made this possible.
The (weak) copyleft license of SDL also meant that games couldn't be recompiled for distribution on game consoles.
Uh, what? It's licensed under the zlib - license ( http://www.gzip.org/zlib/zlib_license.html ), how does that preclude game consoles?
A set of Python bindings similar in scope to SDL 1.2's Pygame has been released: sdl2.ext.
He probably meant SDL v1.2 which was licensed under the LGPL.
He probably meant SDL v1.2 which was licensed under the LGPL.
LGPL still does allow linking against proprietary code, so I don't see the problem there, either. There are plenty of commercial, proprietary games that use SDL for one or another thing.
Like the GPL, the LGPL requires distributions of executable applications to provide "scripts for controlling installation" (2.1) or "Installation Information" (LGPLv3) for running an application with a modified library. Console makers have shown themselves unwilling to allow video game publishers to provide this sort of Installation Information to the public.
The license change happened more than a year before Sam Lantinga was hired by Valve.
Mada mada dane.
How does one spell "non-sequitor"?
You got it close; it's -tur. But I don't see how mentioning a second implication of relicensing from LGPL to a permissive license is a non-sequitur in a reply to a comment mentioning a first implication.
It looks like they've stopped using the preprocessor to hijack the entry point for SDL_main. That practice caused no end of annoying mysterious problems in the past - I can't wait to get home and test to see if it's true.
Oh, interesting; I did not know that. Thanks for pointing it out instead of yelling at me for being lazy and not looking it up ;)
Apparently wizard is not a legitimate career path, so I chose programmer instead.
How does one spell "non-sequitor"?
With great difficulty, apparently.
Ezekiel 23:20
With SDL 1.2, if there was a bug on SDL... or if in need to run the game on the new directfb/wayland/whatever frontend, updating SDL was enough.
With SDL 2 linked statically against some closed game... not so much.
Perhaps this is for iOS / Android? Statically linking allows for dead-stripping of unused code and possibly considerably smaller binaries which is ideal for Mobile Apps that will run on limited platforms -- especially since you can't update a single dynamically linked binary for a mobile app anyhow.
I've been reading through the improvements, and this actually seems like a big step forward for SDL. It's dropping antique crap like CD audio playing, moving towards a more modern GPU-focused system. They're not keeping old API bits around just for compatibility, but none of these changes seem like change-for-the-sake-of-change. I'm particularly interested in the OpenGL 3.0 stuff - getting a "modern" OpenGL context set up is a pain in twenty asses, and if they can simplify that, all the better.
One of the more interesting changes is the license switch from LGPL to zlib.
I suspect this was done due to the rise of SFML (Simple and Fast Multimedia Library).
I believe you can actually update the QT libraries on Android separately using Ministro. I don't know if any other libraries do something like this.
I never got this command to enable OpenGL vsync properly under Windows:
SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
However this works:
typedef bool (APIENTRY *PFNWGLSWAPINTERVALFARPROC)(int);
PFNWGLSWAPINTERVALFARPROC wglSwapIntervalEXT = 0;
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALFARPROC)wglGetProcAddress("wglSwapIntervalEXT");
if (wglSwapIntervalEXT) {
wglSwapIntervalEXT(1);
}
Why did the SDL-specific method not work with any GPU? Does it work in 2.0?
I ask because Occulus Rift is the next MUST need and MUST support in future Games.
It is a new Game experience and will be similar like the rise of the first 3d video accelerator Voodoo Graphics cards.