심플 다이렉트미디어 레이어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
심플 다이렉트미디어 레이어(SDL)는 1998년 샘 랜틴가에 의해 개발된 크로스 플랫폼 래퍼 라이브러리로, 운영 체제에 종속적인 함수를 감싸 여러 운영 체제에서 공통된 프레임워크를 제공한다. SDL은 2D 픽셀 연산, 소리, 파일 접근, 이벤트 처리, 타이밍, 스레딩을 지원하며, OpenGL을 보완하여 그래픽 출력을 설정하고 마우스 및 키보드 입력을 제공하는 데 사용된다. SDL은 여러 하위 시스템과 표준 라이브러리를 제공하며, 다양한 프로그래밍 언어를 위한 바인딩을 지원한다. SDL은 앵그리 버드, 언리얼 토너먼트, 밸브 코퍼레이션의 소스 엔진을 사용하는 게임 등 다양한 상업용 및 오픈 소스 게임에서 활용되고 있다.
더 읽어볼만한 페이지
- Zlib 라이선스 소프트웨어 - NSIS
NSIS는 윈도우용 오픈 소스 설치 프로그램 제작 시스템으로, 스크립트 기반의 유연한 제어, 다양한 기능, 다국어 및 플러그인 지원, Modern UI를 통한 사용자 친화적 환경 구축을 제공하며, 윈앰프 설치 시스템에서 시작되어 여러 유명 소프트웨어에 활용되었고 POSIX 플랫폼 지원으로 리눅스, macOS 등에서도 컴파일이 가능하다. - Zlib 라이선스 소프트웨어 - SFML
SFML은 C++로 작성된 멀티미디어 라이브러리이며, 다양한 프로그래밍 언어 바인딩을 지원하고, 게임 개발, 교육, 과학 프로젝트 등에 활용된다. - MacOS API - 오픈스텝
오픈스텝은 넥스트와 선 마이크로시스템즈가 개발한 객체 지향 프로그래밍 환경 및 API 표준으로, 넥스트스텝을 기반으로 다양한 운영체제에서 실행 가능하도록 설계되었으며, macOS, iOS의 Cocoa API 및 GNUstep과 같은 자유 소프트웨어 구현체의 기반이 되었다. - MacOS API - 코어 오디오
코어 오디오는 macOS의 오디오 프레임워크로서 낮은 레이턴시와 유연한 설계를 특징으로 하며, 오디오 유닛 플러그인, 다양한 오디오 포맷, 그리고 하드웨어 추상화 계층 등의 서비스로 구성된다. - 리눅스 API - 와인 (소프트웨어)
와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다. - 리눅스 API - OpenAL
OpenAL은 3차원 오디오를 위한 크로스 플랫폼 API로, 소스 객체, 오디오 버퍼, 리스너를 사용하여 3차원 공간에서 소리를 구현하며 다양한 운영 체제와 하드웨어를 지원한다.
심플 다이렉트미디어 레이어 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
이름 | 심플 다이렉트미디어 레이어 |
원어명 | Simple DirectMedia Layer |
![]() | |
종류 | API |
라이선스 | zlib 라이선스 2.0.0 이전: GNU LGPL |
웹사이트 | SDL 공식 웹사이트 |
개발 | |
최초 개발자 | 샘 란팅가 |
개발자 | SDL 커뮤니티 |
유지보수자 | 샘 란팅가 |
배포 정보 | |
최초 배포일 | 1998년 |
최신 버전 | 2.30.3 |
최신 배포일 | 2024년 5월 2일 |
지원 환경 | |
운영 체제 | 리눅스 (SteamOS 등), 윈도우, macOS 10.4 이상, iOS 3.1.3 이상, tvOS, 안드로이드 2.3.3 이상, FreeBSD 8.4 이상, 닌텐도 스위치, 플레이스테이션 2, Haiku, RISC OS 3.5 이상, MorphOS 0.4 이상 |
플랫폼 | 'IA-32' (i386), 'x86-64', 'PowerPC', AArch64 |
개발 관련 정보 | |
프로그래밍 언어 | C |
언어 바인딩 | 다양한 언어 지원 SDL Language Bindings 참고 |
2. 역사
SDL은 게임 등 응용 프로그램이 접근해야 하는 운영 체제별 함수를 감싸는 래퍼이다.[25] 여러 운영 체제에서 공통된 프레임워크를 제공하여 2D 픽셀 연산, 소리, 파일 접근, 이벤트 처리, 타이밍, 스레딩 등을 지원한다. SDL은 OpenGL을 보완하여 그래픽 출력을 설정하고 마우스 및 키보드 입력을 제공하는데 사용된다.
SDL은 1998년 초 샘 랜틴가(Sam Lantinga)가 로키 소프트웨어에서 근무하던 중 윈도우 응용 프로그램을 매킨토시로 이식하면서 처음 개발되었다.[84] 이후 SDL은 둠을 BeOS로 포팅하는 데 사용되었다.[14] SMPEG, OpenAL 등 다양한 자유 라이브러리들이 SDL과 함께 개발되었다. 2008년, 샘 랜틴가는 SDL의 상업적 지원을 위해 Galaxy Gameworks를 설립했지만, 시간 제약으로 인해 계획은 보류되었다.[15]
Galaxy Gameworks 계획이 보류된 직후, 랜틴가는 SDL 1.3(이후 SDL 2.0)이 zlib 라이선스로 배포될 것이라고 발표했다.[16] SDL 1.3은 SDL 1.2 코드 기반의 주요 업데이트로, 다중 창 지원, 다중 입력 장치(다중 마우스, 다중 키보드 등) 지원, 하드웨어 가속 2D 그래픽, 향상된 유니코드 지원 등 여러 기능이 추가되었다.[85][86] zlib 라이선스를 통해 상용 프로젝트에서도 자유롭게 SDL을 사용할 수 있게 되었다.[87]
2012년 7월 14일, 샘 랜틴가는 밸브 코퍼레이션(Valve Corporation)에 합류함과 동시에 SDL 2.0을 발표했다.[17] 2013년 8월 13일, SDL 2.0.0의 안정적인 릴리스가 발표되었다.[18] SDL 2.0은 SDL 1.2와 하위 호환되지 않는[19] API를 가지고 있다. 다중 창 지원, 하드웨어 가속 2D 그래픽 및 더 나은 유니코드 지원이 추가되었다.[20]
Mir 및 Wayland에 대한 지원은 SDL 2.0.2[21]에 추가되었고, SDL 2.0.4에서 기본적으로 활성화되었다.[22] 2.0.4 버전에서는 Android에 대한 지원도 개선되었다.[23]
2024년, SDL 3.1.3의 안정적인 미리 보기가 출시되어 API 일관성 향상, 더 많은 장치 지원, 추가 기능 등이 제공되었다.[24]
3. 구조
SDL은 함수 기반으로 동작하며, 모든 연산은 서브루틴(함수)에 매개변수를 전달하는 방식으로 수행된다. SDL은 비디오, 오디오, CD-ROM, 조이스틱, 타이머등 여러 하위 시스템으로 나뉜다.
3. 1. 하위 시스템
3. 2. 표준 라이브러리
SDL은 기본적인 저수준 지원 외에도 다음과 같은 기능을 지원하는 "표준 라이브러리"를 제공하며, 이들은 공식 웹사이트에서 제공되고 공식 문서에 포함되어 있다.
4. 언어 바인딩
SDL 2.0은 C, C++, 파스칼[83], 펄(sdl.perl.org를 통해)[83], 파이썬(PySDL2.0을 통해)[83], C#[83], 루아[83], OCaml[83], 러스트, Nim, 발라, 지니를 위한 언어 바인딩이 있다.[83]
SDL 2.0 라이브러리가 지원하는 언어는 다음과 같다.
지원 언어 |
---|
SDL 자체는 C 언어로 작성되었으며, C/C++(C++)용 인터페이스만 공식적으로 제공되지만, 커뮤니티에서 Ada, C#, Java, Lua, Pascal, Perl, Python, Ruby, Rust, Smalltalk 등 다양한 프로그래밍 언어용 바인딩(래퍼)도 개발되고 있다.[77]
5. 지원 백엔드
SDL은 여러 플랫폼을 지원하기 위해 각 운영 체제별로 별도의 모듈을 사용한다. 다음은 지원되는 백엔드들이다:[6]
- 마이크로소프트 윈도우용 GDI 백엔드.
- DirectX 백엔드; 이전 SDL 1.2는 기본적으로 DirectX 7을 사용하고, 2.0은 DirectX 9를 기본으로 사용하며 DirectX 12까지 접근할 수 있다.
- macOS용 Quartz 백엔드(2.0에서 삭제됨).
- Metal 백엔드는 2.0.8부터 macOS / iOS / tvOS용; 이전 버전은 기본적으로 OpenGL을 사용한다.[49][50]
- 다양한 운영 체제에서 X11 기반의 윈도잉 시스템을 위한 Xlib 백엔드.[51]
- 다양한 플랫폼에서 OpenGL 컨텍스트.[52]
- EGL 백엔드는 Wayland 기반의 윈도잉 시스템과 함께 사용될 때,[53] 라즈베리 파이[54] 및 기타 시스템.
- 이를 지원하는 플랫폼에서 Vulkan 컨텍스트.[8]
- PSP에 고유한 소니 OpenGL과 유사한 백엔드
- `Gu` back-end.
비공식 Sixel 백엔드는 SDL 1.2에서 사용할 수 있다.[55]
6. 활용 예시
SDL은 수년 동안 많은 상업용 및 비상업용 비디오 게임 프로젝트에 사용되었다. 예를 들어, MobyGames는 2013년에 SDL을 사용하는 120개의 게임을 나열했으며,[57] SDL 웹사이트 자체는 2012년에 약 700개의 게임을 나열했다.[58] 중요한 상업적 예로는 앵그리 버드'',[59] 언리얼 토너먼트, 그리고 밸브 코퍼레이션의 소스 엔진을 사용하여 개발된 게임들이 있는데, 이는 SDL을 광범위하게 사용하여 여러 플랫폼 간의 호환성을 확보한다. 오픈 소스 분야의 예로는 OpenTTD'',[60] The Battle for Wesnoth''[61] 또는 Freeciv''가 있다.[62]
Linux, Mac 및 Android용으로 출시된 인기 있는 험블 인디 번들의 멀티 플랫폼 게임 릴리스는 종종 SDL 기반이다.
SDL은 또한 레거시 코드를 사용하여 새로운 플랫폼으로의 후기 이식에 자주 사용된다. 예를 들어, PC 게임 호메월드는 SDL을 통해 판도라 휴대용 게임기[63] 및 Android용 재기드 얼라이언스 2로 이식되었다.[64]
또한, 몇몇 비디오 게임이 아닌 프로그램에서도 SDL을 사용한다. 예로는 에뮬레이터인 DOSBox, FUSE ZX 스펙트럼 에뮬레이터, VisualBoyAdvance 등이 있다.
SDL을 사용한 개발에 관한 여러 권의 책이 쓰여졌다 (추가 자료 참조).
SDL은 대학교의 멀티미디어 및 컴퓨터 과학 과정에서 사용되며, 예를 들어 2010년 카디스 대학교에서 libSDL을 이용한 게임 프로그래밍 워크숍이나, 2015년 파라나 연방 기술 대학교(UTFPR) (폰타 그로사 캠퍼스)의 게임 디자인 교육에서 사용된다.
Squeak, Pharo와 같은 Smalltalk 환경에서는 개발 환경의 Window를 그리는 기반으로 SDL을 사용하고 있다.
7. SDL 사용 API (일본어 문서 내용)
SDL은 화면 렌더링에 OS에 따라 다른 API를 사용한다. SDL 1.2의 경우, Windows에서는 DirectDraw 또는 GDI가, Linux에서는 Xlib가 사용된다. 하지만 환경 변수 "SDL_VIDEODRIVER"를 변경하면, 프로그램을 수정하지 않고 다른 API를 사용하여 표시하는 것도 가능하다.[78] 사용 가능한 드라이버는 플랫폼 및 SDL의 컴파일 시 옵션에 따라 달라진다.
마찬가지로, 음성 출력에 사용하는 API도 환경 변수 `SDL_AUDIODRIVER`로 변경할 수 있다.
SDL 2.0에서는 창 생성 시 플래그를 지정하여 OpenGL 및 Vulkan을 직접 사용한 3D 렌더링을 지원할 수 있다.[79]
2D 그래픽스 렌더러 `SDL_Renderer`는 `SDL_SetHint()`와 `SDL_HINT_RENDER_DRIVER`를 사용하여 우선적으로 선택하고 싶은 백엔드의 힌트를 지정할 수 있다.[80]
8. 갤러리
참조
[1]
웹사이트
Oh look, we'll have official tvOS support in SDL 2.0.5, for people that want their SDL-based games on Apple TV!
https://twitter.com/[...]
2016-09-15
[2]
웹사이트
SDL/docs/README-riscos.md at 9d83c0a65d969a902c91f4f94fd5a904c0828a33 · libsdl-org/SDL
https://github.com/l[...]
2024-03-17
[3]
웹사이트
Great galaga style true color game for MorphOS (uses SDL)
https://aminet.net/p[...]
[4]
웹사이트
SDL 2.30.7 Libraries
https://www.morphos-[...]
2024-11-06
[5]
웹사이트
SDL license
http://www.libsdl.or[...]
2014-03-03
[6]
웹사이트
a list of the platforms SDL supports
http://wiki.libsdl.o[...]
Libsdl.org
2016-04-09
[7]
웹사이트
SDL official website
http://www.libsdl.or[...]
Libsdl.org
2010-03-19
[8]
웹사이트
CategoryVulkan - SDL Wiki'
https://wiki.libsdl.[...]
2019-05-05
[9]
웹사이트
SDL Language Bindings
http://www.libsdl.or[...]
Simple DirectMedia Layer
2014-08-13
[10]
웹사이트
Licensing the Simple DirectMedia Layer library
http://www.libsdl.or[...]
2012-01-30
[11]
웹사이트
SDL/docs/README-dynapi.md at main · libsdl-org/SDL
https://github.com/l[...]
2024-06-25
[12]
간행물
libsdl-org/sdl12-compat
https://github.com/l[...]
Simple Directmedia Layer
2024-06-01
[13]
웹사이트
Simple DirectMedia Layer
http://www.libsdl.or[...]
2010-06-29
[14]
웹사이트
SDL: Making Linux fun
http://www-106.ibm.c[...]
1999-09-01
[15]
웹사이트
Exploring the Galaxy
http://slouken.blogs[...]
2011-04-06
[16]
문서
SDL 1.3 to be zLib Licensed
http://forums.libsdl[...]
SDL Mailing List
2011-04-07
[17]
웹사이트
SDL 2.0 Is Coming Very Soon With New Features
https://www.phoronix[...]
2012-08-17
[18]
문서
Announcing SDL 2.0.0
http://forums.libsdl[...]
SDL Mailing List
2013-08-13
[19]
문서
'MigrationGuide - SDL Wiki'
http://wiki.libsdl.o[...]
Wiki.libsdl.org
2013-11-21
[20]
웹사이트
SDL 1.3 Roadmap
http://wiki.libsdl.o[...]
2011-06-14
[21]
웹사이트
Some of Linux's Most Popular Games Will Run Natively On Mir
http://www.omgubuntu[...]
2014-02-05
[22]
웹사이트
SDL 2.0.4 Changelog
https://hg.libsdl.or[...]
2016-01-02
[23]
웹사이트
SDL_SysWMinfo
https://wiki.libsdl.[...]
[24]
웹사이트
SDL 3.1.3 Stable ABI Preview Release
https://www.phoronix[...]
[25]
웹사이트
Introduction to SDL
http://wiki.libsdl.o[...]
2014-03-03
[26]
웹사이트
APIByCategory
https://wiki.libsdl.[...]
[27]
웹사이트
SDL_image 2.0
http://www.libsdl.or[...]
2014-07-19
[28]
웹사이트
SDL_mixer 2.0
http://www.libsdl.or[...]
2014-07-19
[29]
웹사이트
SDL_net 2.0
http://www.libsdl.or[...]
2014-07-19
[30]
웹사이트
SDL_ttf 2.0
http://www.libsdl.or[...]
2014-07-19
[31]
웹사이트
SDL_rtf 0.1
http://www.libsdl.or[...]
2014-07-19
[32]
웹사이트
cl-sdl2
https://github.com/l[...]
GitHub
2017-11-23
[33]
웹사이트
f03sdl2
https://github.com/i[...]
GitHub
2019-10-28
[34]
웹사이트
gb.sdl2
https://gambaswiki.o[...]
Gambas Wiki
2023-02-02
[35]
웹사이트
Go + Julia + Fourier = Open Source Frequon Invaders
https://software.int[...]
2015-11-09
[36]
웹사이트
SDL on Hackage
https://hackage.hask[...]
[37]
웹사이트
SDL2 on Hackage
https://hackage.hask[...]
[38]
웹사이트
jonathanBieler/SimpleDirectMediaLayer.jl
https://github.com/j[...]
2020-07-30
[39]
웹사이트
Example games for GameZero.jl
https://github.com/S[...]
2020-08-02
[40]
웹사이트
Example game written in julia using SDL2
https://github.com/N[...]
2019-07-31
[41]
웹사이트
SDL2 for Nim
https://github.com/n[...]
GitHub
2022-05-31
[42]
웹사이트
Odin Vendor Library Collection
https://pkg.odin-lan[...]
[43]
웹사이트
Odin GitHub repository
https://github.com/o[...]
[44]
웹사이트
PerlGameDev/SDL
https://github.com/P[...]
GitHub
2019-02-20
[45]
웹사이트
PHP-SDL
https://github.com/P[...]
GitHub
2019-10-28
[46]
웹사이트
SDL2::Raw
https://modules.raku[...]
modules.raku.org
2020-05-15
[47]
서적
Beginning Ring Programming - From Novice to Professional {{!}} Mansour Ayouni {{!}} Apress
https://www.apress.c[...]
[48]
웹사이트
Using RingLibSDL — Ring 1.16 documentation
https://ring-lang.gi[...]
[49]
웹사이트
WhatsNew.txt
https://www.libsdl.o[...]
2020-09-28
[50]
웹사이트
'[Commits] SDL: Enable building the Metal renderer by default, and weak lin...'
http://lists.libsdl.[...]
2017-12-07
[51]
웹사이트
SDL: README-platforms.txt@3e2f230a6d62
http://hg.libsdl.org[...]
libsdl.org
2013-12-08
[52]
웹사이트
Using OpenGL With SDL
https://www.libsdl.o[...]
2015-07-09
[53]
웹사이트
SDL and Wayland
https://wiki.archlin[...]
[54]
웹사이트
Raspberry Pi Support Added To SDL2 Library
https://www.phoronix[...]
2013-09-30
[55]
웹사이트
SDL 1.2 Sixel
https://github.com/s[...]
2016-04-09
[56]
웹사이트
SDLPluginPort
https://www.rockbox.[...]
2019-08-11
[57]
웹사이트
Middleware: SDL Group Description
http://www.mobygames[...]
MobyGames
2013-09-27
[58]
웹사이트
Games
http://www.libsdl.or[...]
libsdl.org
2012-05-18
[59]
웹사이트
SDL Testimonials
http://www.galaxygam[...]
Galaxygameworks.com
2012-02-01
[60]
웹사이트
Development
http://www.openttd.o[...]
OpenTTD
2010-03-19
[61]
웹사이트
CompilingWesnoth
http://wesnoth.org/w[...]
Wesnoth
2010-02-27
[62]
웹사이트
SDLClient - Freeciv.org
http://freeciv.wikia[...]
Freeciv.wikia.com
2010-03-19
[63]
웹사이트
Game of the Week #3 – Homeworld SDL
http://pandorapress.[...]
pandorapress.net
2011-06-23
[64]
웹사이트
JA2 Stracciatella Feedback » Jagged Alliance 2 Android Stracciatella Port RC2 Release - please test
http://www.ja-galaxy[...]
2011-10-03
[65]
웹사이트
Features · fifengine/fifengine Wiki · GitHub
https://github.com/f[...]
2015-03-09
[66]
웹사이트
FAQ Hedgewars
https://www.hedgewar[...]
2014-10-03
[67]
웹사이트
Development Details
http://www.scorched3[...]
2014-10-03
[68]
웹사이트
About the game
http://fretsonfire.s[...]
2021-09-20
[69]
웹사이트
Oolite SDL Dependencies
https://github.com/O[...]
2016-05-29
[70]
웹사이트
Roadmap - Wesnoth
http://wiki.wesnoth.[...]
2015-03-09
[71]
웹사이트
New Release: 0 A.D. Alpha 19 Syllepsis
https://play0ad.com/[...]
2015-11-26
[72]
웹사이트
Secret Maryo Chronicles
https://sourceforge.[...]
2014-08-28
[73]
웹사이트
Frozenbyte Support
http://trine2.com/he[...]
2020-09-01
[74]
웹사이트
"[HowTo] Compile 0.7 on windows (Page 1) — Development — Teeworlds Forum"
https://www.teeworld[...]
[75]
Youtube
Announcing SDL 2.30.0 - SDL Announcements - Simple Directmedia Layer
https://discourse.li[...]
[76]
문서
SDL moving to GitHub - SDL Development - Simple Directmedia Layer
https://discourse.li[...]
[77]
문서
Simple DirectMedia Layer - Language Bindings
https://www.libsdl.o[...]
[78]
문서
FAQUsingSDL - SDL Wiki
https://wiki.libsdl.[...]
[79]
문서
SDL_WindowFlags - SDL Wiki
https://wiki.libsdl.[...]
[80]
문서
SDL_HINT_RENDER_DRIVER - SDL Wiki
https://wiki.libsdl.[...]
[81]
웹인용
Simple DirectMedia Layer - SDL version 2.0.10 (stable)
http://www.libsdl.or[...]
Libsdl.org
2019-07-26
[82]
웹인용
SDL official website
http://www.libsdl.or[...]
Libsdl.org
2010-03-19
[83]
웹인용
SDL Language Bindings
http://www.libsdl.or[...]
Simple DirectMedia Layer
2014-08-13
[84]
웹인용
Exploring the Galaxy
http://slouken.blogs[...]
2011-04-06
[85]
웹인용
SDL 1.3 Roadmap
http://wiki.libsdl.o[...]
2011-06-14
[86]
웹인용
FAQs: General
http://wiki.libsdl.o[...]
2009-10-10
[87]
웹인용
Licensing the Simple DirectMedia Layer library
http://www.libsdl.or[...]
2012-01-30
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com