Simple DirectMedia Layer
Vývojář | SDL Community |
---|---|
První vydání | 1998 |
Aktuální verze | 2.30.6 (1. srpna 2024) |
Operační systém | GNU/Linux, MS Windows, macOS 10.4+, iOS 3.1.3+, Android 2.3.3+, FreeBSD 8.4+, Haiku navíc před v2.0.0 (nedoporučované): AmigaOS, RISC OS[1] |
Vyvíjeno v | C |
Typ softwaru | API |
Licence | Licence zlib |
Web | www.libsdl.org |
Některá data mohou pocházet z datové položky. |
Simple DirectMedia Layer (SDL) je multiplatformní multimediální knihovna poskytující nízkoúrovňový přístup k audiu, klávesnici, joysticku, 2D a 3D počítačové grafice. Napsaná je v jazyce C, nicméně díky tzv. propojování jazyků (language binding) je možné knihovnu použít také v Javě, Delphi, Pythonu, Perlu a dalších. Současná verze 2.0.7 využívá grafickou knihovnu OpenGL; pod MS Windows pak i DirectX. Samotná knihovna obsahuje jen základní funkce, na vše ostatní jsou potřebné doplňující knihovny (SDL_image, SDL_ttf, SDL_net, SDL_Sound, SDL_Mixer, SMPEG a další).
Historie
Sam Lantinga vytvořil knihovnu během své práce pro Loki Software. Nápad dostal při portování Windows aplikace na Macintosh. SDL poté použil pro port Doomu na BeOS. Se SDL spolupracuje i několik dalších svobodných knihoven, jako například SMPEG a OpenAL.
Knihovna SDL je propojitelná s téměř libovolným existujícím programovacím jazykem, od populárních C++, Perl, Python (skrze Pygame), Pascal atd. k méně známým, jako například Euphoria či Pliant. Toto společně s faktem, že SDL je software s otevřeným zdrojovým kódem a licencované pod LGPL, činí SDL obvyklou volbou pro vývoj mnoha multimediálních aplikací.
SDL samotné je velmi jednoduché; funguje jako tenký multiplatformní wrapper poskytující podporu pro 2D operace s pixely, zvuk, přístup k souborům, zpracování událostí, časování, vlákna atd. Je často použito jako doplněk OpenGL k nastavení grafického výstupu a poskytnutí vstupu z klávesnice a myši, což je za předmětem zájmu OpenGL.
- SDL_image – podpora pro více formátů obrázků
- SDL_mixer – komplexní funkce pro práci s audiem, zejména pro mixování zvuku
- SDL_net – podpora síťování
- SDL_ttf – podpora vykreslování fontů TrueType
- SDL_rtf – jednoduché renderování RTF
Architektura
SDL má ve svém názvu slovo „layer“ ([ˈleiə(r)]; vrstva) proto, že jde ve skutečnosti o wrapper [ˈræpə(r)] nad funkcionalitou specifickou pro konkrétní operační systém.
Na platformách s X11 používá SDL Xlib pro komunikaci s X11 systémem pro grafiku a události.
Na macOS používá SDL Quartz.
Příklad v jazyce C – inicializace videa
Jako základ je vložen SDL.h, tato knihovna obsahuje hlavní funkce SDL. Protože budeme inicializovat video ⇒ budeme používat backbuffer, k tomuto účelu slouží v SDL ukazatel Screen na SDL_Surface. V samotné funkci nejdříve zkontrolujeme, zda lze video inicializovat, pokud ne, vypíšeme chybu do stderr, což je už automaticky vytvořený stream pro zápis chyb. Do ukazatele Screen vložíme všechna nastavení našeho okna, tedy šířku, výšku, barevnou hloubku a příznaky (lze kombinovat pomocí |), pokud se inicializace nezdařila, vypíšeme chybu.
#include <SDL.h>
typedef enum{false, true} BOOL;
SDL_Surface * Screen;
BOOL InitVideo(Uint16 ScreenWidth, Uint16 ScreenHeight, Uint32 Flags, Uint16 ColorDepth)
{
if(SDL_Init(SDL_INIT_VIDEO) != 0)
{
fprintf(stderr, "Nepodařilo se inicializovat SDL: %s\n", SDL_GetError());
return false;
}
Screen = SDL_SetVideoMode(ScreenWidth, ScreenHeight, ColorDepth, Flags);
if(!Screen)
{
fprintf(stderr, "Nepodařilo se nastavit video mód: %s\n", SDL_GetError());
return false;
}
}
Galerie
- Hedgewars
- Frets on Fire
- Secret Maryo Chronicles
- (c) Trine - http://www.trine-thegame.com, CC BY-SA 3.0
Reference
- ↑ Installation - SDL Wiki [online]. 2016-04-01 [cit. 2018-01-02]. WayBack Machine. Dostupné v archivu pořízeném z originálu. (anglicky)
- ↑ OpenTTD [online]. OpenTTD Team [cit. 2010-03-19]. Powered by OVH.de. Dostupné v archivu pořízeném dne 2014-07-10. (anglicky)
- ↑ CompilingWesnoth [online]. The Battle for Wesnoth Project, 2010-02-27 [cit. 2018-01-02]. Kapitola Prerequisites. Powered by MediaWiki. Dostupné v archivu pořízeném dne 2018-01-03. (anglicky)
- ↑ Oolite: an open-world space opera [online]. Giles Williams, Jens Ayton & contributors, rev. 2017-10-25 [cit. 2018-01-02]. Oolite.org. Dostupné v archivu pořízeném dne 2008-12-18. (anglicky)
Externí odkazy
- Obrázky, zvuky či videa k tématu Simple DirectMedia Layer na Wikimedia Commons
- (česky) – Úvod do problematiky na webu programujte.com
Média použitá na této stránce
Autor: Původně soubor načetl ThomasHarte na projektu Wikipedie v jazyce angličtina, Licence: GPL
A screenshot of OOlite, an Elite clone for Mac OS X.
Autor: Battle for Wesnoth development team, Licence: GPL
Screenshot of Battle for Wesnoth 1.6
Autor: Florian Richter and SMC developer team, Licence: GPLv3
Secret Maryo Chronicles 1.5 Screen Shot
Autor: Původně soubor načetl Jamz92 na projektu Wikipedie v jazyce angličtina, Licence: GPL
Toto je logo: Simple DirectMedia Layer – svobodná softwarová multimediální knihovna
Autor: Wildfire Games, Licence: GPL
A screenshot of 0 A.D. alpha 25 - playing as Spartans, with all Spartan buildings constructed (except for dock).
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Illustrates the connection between the Linux kernel and OpenGL-based video games. Also see GNU C Library, system calls, Mesa 3D, game engine, Simple DirectMedia Layer, Direct Rendering Manager, Open-source video game.
Autor: The Unknown Horizons Team, Licence: CC BY-SA 3.0
Screenshot of Unknown Horizons 2011.3
Autor: , Licence: GPL
OpenTTD 0.7.1 using OpenGFX 0.1.0-alpha5 both under GNU GPL v2