Enkelt DirectMedia Layer - Simple DirectMedia Layer
Ursprungliga författare | Sam Lantinga |
---|---|
Utvecklare | SDL -gemenskap |
Initial release | 1998 |
Stabil frisättning | 2.0.16 / 10 augusti 2021
|
Förvar | |
Skrivet i | C |
Operativ system |
Linux , Windows, AmigaOS , macOS 10.4+ , iOS 3.1.3+ , tvOS , Android 2.3.3+ , FreeBSD 8.4+ , Haiku Dessutom före v2.0.0 (utfasat): RISC OS |
Typ | API |
Licens |
zlib Licens Före 2.0.0: GNU LGPL |
Hemsida | www |
Simple Directmedia Layer ( SDL ) är en plattformsoberoende mjukvaruutveckling bibliotek utformad för att ge en Hardware Abstraction Layer för datormultimediahårdvarukomponenter . Programutvecklare kan använda den för att skriva högpresterande datorspel och andra multimediaprogram som kan köras på många operativsystem som Android , iOS , Linux , macOS och Windows .
SDL hanterar video , ljud , inmatningsenheter , CD-ROM , trådar , laddning av delade objekt , nätverk och timers. För 3D -grafik kan den hantera ett OpenGL- , Vulkan- , Metal- eller Direct3D11 -sammanhang (äldre Direct3D version 9 stöds också). En vanlig missuppfattning är att SDL är en spelmotor , men detta är inte sant. Men biblioteket är lämpligt för att bygga spel direkt, eller kan användas indirekt av motorer byggda ovanpå det.
Biblioteket är internt skrivet i C och möjligen, beroende på målplattformen, C ++ eller Objective-C , och ger applikationsprogrammeringsgränssnittet i C, med bindningar till andra tillgängliga språk. Det är gratis och öppen källkodsprogram som omfattas av zlib-licensens krav sedan version 2.0, och med tidigare versioner som omfattas av GNU Lesser General Public License . Under zlib-licensen är SDL 2.0 fritt tillgängligt för statisk länkning i slutna källprojekt, till skillnad från SDL 1.2. SDL 2.0, som släpptes 2013, var en stor avvikelse från tidigare versioner och erbjuder fler möjligheter för 3D-hårdvaruacceleration, men bryter bakåtkompatibilitet.
SDL används flitigt i branschen i både stora och små projekt. Över 700 spel, 180 applikationer och 120 demos har lagts ut på bibliotekets webbplats.
Historia
Sam Lantinga skapade biblioteket och släppte det först i början av 1998 medan han arbetade för Loki Software . Han fick idén när han överförde ett Windows -program till Macintosh. Han använde sedan SDL för att överföra Doom till BeOS (se Doom -källportar ). Flera andra gratisbibliotek utvecklades för att fungera tillsammans med SDL, till exempel SMPEG och OpenAL . Han grundade också Galaxy Gameworks 2008 för att kommersiellt stödja SDL, även om företagets planer för närvarande väntar på grund av tidsbrist.
Strax efter att Galaxy Gameworks väntades meddelade Lantinga att SDL 1.3 (som senare skulle bli SDL 2.0) skulle licenseras under zlib -licensen . Lantinga meddelade SDL 2.0 den 14 juli 2012, samtidigt som han meddelade att han gick med i Valve , vars första version tillkännagavs samma dag som han gick med i företaget. Lantinga meddelade den stabila utgåvan av SDL 2.0.0 den 13 augusti 2013.
SDL 2.0 är en viktig uppdatering av SDL 1.2- kodbasen med ett annat, inte bakåtkompatibelt API . Det ersätter flera delar av 1.2 API med mer allmänt stöd för flera in- och utmatningsalternativ. Vissa funktionstillägg inkluderar stöd för flera fönster, hårdvaruaccelererad 2D-grafik och bättre Unicode- stöd.
Stöd för Mir och Wayland lades till i SDL 2.0.2 och aktiverades som standard i SDL 2.0.4. Version 2.0.4 gav också bättre stöd för Android.
Programvaruarkitektur
SDL är en omslag kring de operativsystemspecifika funktioner som spelet behöver komma åt. Det enda syftet med SDL är att tillhandahålla en gemensam ram för åtkomst till dessa funktioner för flera operativsystem (plattformsoberoende). SDL ger stöd för 2D -pixeloperationer, ljud, filåtkomst, händelsehantering, timing och trådning. Det används ofta för att komplettera OpenGL genom att ställa in den grafiska utmatningen och tillhandahålla mus- och tangentbordsinmatning, eftersom OpenGL endast omfattar återgivning.
Ett spel som använder Simple DirectMedia Layer körs inte automatiskt på alla operativsystem; ytterligare anpassningar måste tillämpas. Dessa reduceras till ett minimum, eftersom SDL också innehåller några abstraktions -API: er för frekventa funktioner som erbjuds av ett operativsystem.
Syntaxen för SDL är funktionsbaserad: alla operationer som utförs i SDL utförs genom att överföra parametrar till underrutiner (funktioner). Särskilda strukturer används också för att lagra den specifika information som SDL behöver hantera. SDL -funktioner kategoriseras under flera olika delsystem.
Delsystem
SDL är uppdelat i flera delsystem:
- Grunderna
- Initiering och avstängning, konfigurationsvariabler, felhantering, logghantering
- Video
- Display- och fönsterhantering, ytfunktioner, renderingsacceleration, etc.
- Inmatningshändelser
- Eventhantering , Support för tangentbord, mus, joystick och spelkontroll
- Tvinga tillbaka feedback
- SDL_haptic.h implementerar stöd för "Force Feedback"
- Audio
- SDL_audio.h implementerar ljudenhetshantering, uppspelning och inspelning
- Trådar
- multi-threading : trådhantering, trådsynkroniseringsprimitiv, atomoperationer
- Timers
- Timer Support
- Filabstraktion
- Filsystemsbanor, fil -I/O -abstraktion
- Stöd för delat objekt
- Läsning av delat objekt och funktionssökning
- Plattform och CPU -information
- Plattformsdetektering, CPU -funktionsdetektering, Byteordning och Bytebyte, Bitmanipulation
- Energihantering
- Strömhanteringsstatus
- Ytterligare
- Plattformsspecifik funktionalitet
Förutom detta grundläggande stöd på låg nivå finns det också några separata officiella bibliotek som erbjuder några fler funktioner. Dessa omfattar "standardbiblioteket" och finns på den officiella webbplatsen och ingår i den officiella dokumentationen:
- SDL_image - stöd för flera bildformat
- SDL_mixer - komplexa ljudfunktioner, främst för ljudblandning
- SDL_net - nätverksstöd
- SDL_ttf - stöd för TrueType -tolkning
- SDL_rtf - enkel rendering av Rich Text Format
Andra, icke-standardiserade bibliotek finns också. Till exempel: SDL_Collide på SourceForge skapad av Amir Taaki .
Språkbindningar
SDL 2.0 -biblioteket har språkbindningar för:
Bakre ändar som stöds
På grund av hur SDL är utformat delas mycket av dess källkod i separata moduler för varje operativsystem, för att ringa till det underliggande systemet. När SDL sammanställs väljs lämpliga moduler för målsystemet. Följande back-endar är tillgängliga:
- GDI -backend för Microsoft Windows .
- DirectX- back-end; äldre SDL 1.2 använder DirectX 7 som standard, medan 2.0 som standard är DirectX 9 och kan komma åt upp till DirectX 11.
- Bakkant av kvarts för macOS (sjunkit i 2.0).
- Metallbackend för macOS / iOS / tvOS sedan 2.0.8; äldre versioner använder OpenGL som standard.
- Xlib -back -end för X11 -baserat fönstersystem på olika operativsystem.
- OpenGL -sammanhang på olika plattformar.
- EGL- back-end när den används tillsammans med Wayland-baserade fönstersystem., Raspberry Pi och andra system.
- Vulkan -sammanhang på plattformar som stöder det.
- sceGu-backend, en Sony OpenGL-liknande backend som är infödd till PSP .
SDL 1.2 har stöd för RISC OS (sjunkit i 2.0).
En inofficiell Sixel- back-end är tillgänglig för SDL 1.2.
Den Rockbox MP3-spelare firmware distribuerar även en version av SDL 1.2, som används för att köra spel som Quake .
Mottagning och adoption
Under åren har SDL använts för många kommersiella och icke-kommersiella videospelprojekt. Till exempel MobyGames noterade 120 spel med SDL 2013 och SDL webbplatsen själv noterade omkring 700 spel i 2012. viktigt kommersiellt exempel är Angry Birds , Unreal Tournament och spel utvecklas med hjälp av Valve 's Source Engine , som använder SDL flitigt för gränsöverskridande -plattformskompatibilitet; de från open-source-domänen är OpenTTD , The Battle for Wesnoth eller Freeciv .
Plattformsoberoende spelutgåvor av de populära Humble Indie-buntarna för Linux, Mac och Android är ofta SDL-baserade.
SDL används också ofta för senare portar på nya plattformar med äldre kod. Till exempel portades PC -spelet Homeworld till Pandora -handenheten och Jagged Alliance 2 för Android via SDL.
Flera icke -videospelprogram använder också SDL; exempel är emulatorerna , såsom DOSBox , FUSE ZX Spectrum emulator och VisualBoyAdvance .
Det fanns flera böcker skrivna för utveckling med SDL (se vidare läsningar).
SDL används i universitetskurser som lär ut multimedia och datavetenskap , till exempel i en workshop om spelprogrammering med libSDL vid University of Cadiz 2010, eller en speldesigndisciplin vid UTFPR (Ponta Grossa campus) 2015.
Exempel på videospel med SDL
Se även
Referenser
Vidare läsning
- Alberto García Serrano: Programación de videojuegos en SDL , Ediversitas, ISBN 84-95836-08-4 (spanska)
- Ernest Pazera: Fokus på SDL , Muska & Lipman/Premier-Trade, ISBN 1-59200-030-4
- Ron Penton: Datastrukturer för spelprogrammerare , Muska & Lipman/Premier-Trade, ISBN 1-931841-94-2 (exempel på spelprogrammering med SDL )
- John R. Hall: Programmering Linux Games , No Starch, ISBN 1-886411-49-2 ( Första SDL-boken, av Loki Games , arkiverad onlineversion: PDF på Wayback Machine (arkiverad 22 januari 2003), LaTex-källor på Wayback Maskin (arkiverad 14 februari 2003))
- SDL Game Development av Shaun Mitchell
- SDL -handledning
- Spelutveckling med SDL 2.0 på YouTube - video från 11 februari 2014 av Ryan C. Gordon