Simple DirectMedia Layer

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

kernelem v Linuxu 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ší).

...
...
...
...
...
...
+more images (3)

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. +more 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. +more 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. +more 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

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(. +moreScreen) { fprintf(stderr, "Nepodařilo se nastavit video mód: %s\n", SDL_GetError); return false; } }.

Galerie

| Freeciv File:Unknown horizons 3176. PNG| Unknown Horizons File:0_A. +moreD. _alpha_25_-_playing_as_Spartans. jpg | 0 A. D. File:Hwscreen. png| Hedgewars File:Fretsonfirex1. jpg| Frets on Fire File:OpenTTD-0. 7. 1-de. png|OpenTTD File:Wesnoth-1. 6-5. jpg|The Battle for Wesnoth File:OOlite_Mac_OS_X_screenshot. jpg| Oolite File:SMC15PromoShot. png| Secret Maryo Chronicles File:Trine - Knight Block. jpg| Trine.

Reference

Externí odkazy

[url=http://programujte.com/clanek/2005092003-sdl-uvod]- Úvod do problematiky[/url] na webu programujte.com

Kategorie:Počítačová grafika Kategorie:Programové knihovny Kategorie:Svobodný software

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top