심플 다이렉트 미디어 레이어
Simple DirectMedia Layer원저작자 | 샘 랜팅가 |
---|---|
개발자 | SDL 커뮤니티 |
초기 릴리즈 | 전( |
안정된 릴리스 | 2.0.22 / 2022년 4월 [1] ; 전( |
저장소 | |
기입처 | C |
운영 체제 | Linux, Windows, AmigaOS, macOS 10.4+, iOS 3.1.3+, tvOS,[2] Android 2.3+, FreeBSD 8.4+, Haiku v2.0.0 이전 버전(권장되지 않음):RISC OS[3] |
유형 | API |
면허증. | zlib 라이선스 2.0.0 이전 버전: GNU LGPL[4] |
웹 사이트 | www |
SDL(Simple Direct Media Layer)은 컴퓨터 멀티미디어 하드웨어 컴포넌트에 하드웨어 추상화 레이어를 제공하도록 설계된 크로스 플랫폼 소프트웨어 개발 라이브러리입니다.소프트웨어 개발자는 안드로이드, iOS, Linux, macOS, Windows와 [3]같은 많은 운영 체제에서 실행할 수 있는 고성능 컴퓨터 게임 및 기타 멀티미디어 애플리케이션을 작성하기 위해 이를 사용할 수 있습니다.
SDL은 비디오, 오디오, 입력 디바이스, CD-ROM, 스레드, 공유 객체 로드, 네트워킹 및 [5]타이머를 관리합니다.3D 그래픽스의 경우 OpenGL, Vulkan,[6] Metal 또는 Direct3D11(구 Direct3D 버전 9도 지원됨) 컨텍스트를 처리할 수 있습니다.SDL은 게임 엔진이라고 오해하는 경우가 많습니다.그러나 라이브러리는 게임을 직접 제작하는 데 적합하거나 그 위에 설치된 엔진에 의해 간접적으로 사용할 수 있습니다.
라이브러리는 내부적으로 C로 작성되며 타겟플랫폼에 따라서는 C++ 또는 Objective-C로 작성되며 다른 언어로의 바인딩을 이용할 수 있는 [7]C의 애플리케이션프로그래밍 인터페이스를 제공합니다.버전 2.0 이후 zlib 라이선스의 요건을 따르는 무료 오픈 소스 소프트웨어이며 이전 버전에서는 GNU Lesser General [4]Public License가 적용됩니다.zlib 라이선스에서는 SDL 2.0은 SDL 1.2와 [8]달리 클로즈드 소스 프로젝트에서 자유롭게 정적 링크를 사용할 수 있습니다.2013년에 출시된 SDL 2.0은 이전 버전과는 크게 달라 3D 하드웨어 액셀러레이션의 기회가 증가했지만 하위 호환성은 깨졌습니다.
SDL은 대규모 프로젝트와 소규모 프로젝트 모두에서 업계에서 광범위하게 사용되고 있습니다.700개가 넘는 게임, 180개의 애플리케이션, 120개의 데모가 라이브러리 [9]웹사이트에 게시되었습니다.
역사
Sam Lantinga는 Loki Software에서 일하던 중 1998년 초에 라이브러리를 처음 출시했습니다.그는 Windows 애플리케이션을 Macintosh로 이식하는 중에 아이디어를 얻었다.그런 다음 SDL을 사용하여 Doom to BeOS를 포트했습니다(Doom 소스 포트 참조).SMPEG 및 OpenAL과 같이 SDL과 함께 작동하도록 개발된 다른 무료 라이브러리도 있습니다.그는 2008년 SDL을 상업적으로 지원하기 위해 갤럭시 게임웍스를 설립했지만, 현재는 시간적 [10]제약으로 인해 계획이 보류되어 있습니다.
Galaxy Gameworks를 보류한 지 얼마 되지 않아 Lantinga는 SDL 1.3(이후 SDL 2.0이 됨)이 zlib [11]License로 라이선스될 것이라고 발표했습니다.Lantinga는 2012년 7월 14일에 SDL 2.0을 발표함과 동시에 밸브에 입사하는 것을 발표했습니다.첫 번째 버전은 [12]입사 당일 발표되었습니다.Lantinga는 2013년 [13]8월 13일에 SDL 2.0.0의 안정적인 릴리스를 발표했습니다.
SDL 2.0은 하위 호환[14] API가 아닌 다른 SDL 1.2 코드베이스의 메이저업데이트입니다.1.2 API의 여러 부분을 여러 입력 및 출력 옵션에 대한 보다 일반적인 지원으로 대체합니다.일부 기능 추가에는 다중 창 지원, 하드웨어 가속 2D 그래픽 및 더 나은 유니코드 [15]지원이 포함됩니다.
Mir 및 Wayland 지원은 SDL 2.0.2에서[16] 추가되어 SDL 2.0.[17]4에서 디폴트로 유효하게 되어 있습니다.버전 2.0.4는 [18]또한 안드로이드에 대한 더 나은 지원을 제공했습니다.
소프트웨어 아키텍처
SDL은 게임이 접근해야 하는 운영체제 고유의 기능을 정리한 것입니다.SDL 의 유일한 목적은, 복수의 operating system(크로스 플랫폼)[19]에 이러한 기능에 액세스 하기 위한 공통의 프레임워크를 제공하는 것입니다.SDL은 2D 픽셀 조작, 사운드, 파일 액세스, 이벤트 처리, 타이밍 및 스레드를 지원합니다.OpenGL은 렌더링만으로 구성되므로 그래픽 출력을 설정하고 마우스와 키보드 입력을 제공함으로써 OpenGL을 보완하기 위해 자주 사용됩니다.
Simple DirectMedia Layer를 사용하는 게임은 모든 운영 체제에서 자동으로 실행되지 않으므로 추가 적응을 적용해야 합니다.SDL에는 운영체제에서 제공하는 빈번한 기능에 대응하는 추상화 API도 몇 개 포함되어 있기 때문에 이러한 기능은 최소한으로 억제됩니다.
SDL의 구문은 함수 베이스입니다.SDL에서 실행되는 모든 조작은 서브루틴(함수)에 파라미터를 전달함으로써 이루어집니다.SDL이 처리해야 할 특정 정보를 저장하기 위해 특수 구조도 사용됩니다.SDL 기능은 몇 가지 다른 서브시스템으로 분류됩니다.
서브시스템
SDL은 다음과 같은 여러 서브시스템으로 [20]나뉩니다.
- 기본
- 초기화 및 셧다운, 설정 변수, 오류 처리, 로그 처리
- 비디오
- 디스플레이 및 창 관리, 지표면 기능, 렌더링 가속 등
- 입력 이벤트
- 이벤트 처리, 키보드, 마우스, 조이스틱 및 게임 컨트롤러 지원
- 강제 피드백
- SDL_haptic.h는 "Force Feedback" 지원을 구현합니다.
- 오디오
- SDL_audio.h는 오디오 디바이스 관리, 재생 및 녹음을 구현합니다.
- 스레드
- 멀티캐스팅:스레드 관리, 스레드 동기화 프리미티브, Atomic Operations
- 타이머
- 타이머 지원
- 파일 추상화
- 파일 시스템 경로, 파일 I/O 추상화
- 공유 객체 지원
- 공유 객체 로드 및 함수 검색
- 플랫폼 및 CPU 정보
- 플랫폼 검출, CPU 기능 검출, 바이트 순서 및 바이트 스왑, 비트 조작
- 전원 관리
- 전원 관리 상태
- 추가의
- 플랫폼 고유의 기능
이러한 기본적이고 낮은 수준의 지원 외에도 몇 가지 기능을 제공하는 몇 가지 별도의 공식 라이브러리가 있습니다.이것들은 「표준 라이브러리」를 구성해, 공식 Web 사이트에서 제공되고, 공식 문서에 포함되어 있습니다.
- SDL_image - 여러 이미지[21] 포맷 지원
- SDL_mixer - 복잡한 오디오 기능, 주로 사운드[22] 믹스용
- SDL_net - 네트워킹[23] 지원
- SDL_ttf - TrueType 글꼴 렌더링[24] 지원
- SDL_rtf - 심플한 리치 텍스트 형식[25] 렌더링
다른 비표준 라이브러리도 존재합니다.예를 들어 Amir Taaki가 작성한SourceForge의 SDL_Collide 등입니다.
언어 바인딩
SDL 2.0 라이브러리에는 다음과 같은 언어 바인딩이 있습니다.
지원되는 백엔드
SDL의 설계 방식 때문에, 대부분의 소스 코드는, 기반이 되는 시스템에의 콜을 발신하기 위해서, operating system 마다 다른 모듈로 분할됩니다.SDL을 컴파일하면 타깃 시스템에 적합한 모듈이 선택됩니다.다음 백엔드를 사용할 [3]수 있습니다.
- Microsoft Windows용 GDI 백엔드
- DirectX 백엔드. 구식 SDL 1.2는 기본적으로 DirectX 7을 사용하며 2.0은 DirectX 9로 기본 설정되며 DirectX 11까지 액세스할 수 있습니다.
- Quartz 백엔드 for macOS (2.0에서 드롭)
- 2.0.8 이후 macOS/iOS/tvOS용 메탈 백엔드. 이전 버전은 [40][41]기본적으로 OpenGL을 사용합니다.
- 다양한 운영 체제에서 [42]X11 기반 윈도우 시스템용 Xlib 백엔드.
- 다양한 [43]플랫폼 상의 OpenGL 컨텍스트
- Wayland 기반 윈도우 시스템,[44] Rasberry[45] Pi 및 기타 시스템과 함께 사용할 경우 EGL 백엔드.
- Vulkan 컨텍스트를 [6]지원하는 플랫폼의 Vulkan 컨텍스트.
- sceGu 백엔드, PSP가 네이티브인 Sony OpenGL과 같은 백엔드.
SDL 1.2는 RISC OS를 지원합니다(2.0에서는 드롭).
SDL 1.2에서는 비공식 Sixel 백엔드를 이용할 수 있습니다.[46]
Rockbox MP3 플레이어 펌웨어는 또한 [47]Quake와 같은 게임을 실행하는 데 사용되는 SDL 1.2 버전을 배포합니다.
접수 및 도입
오랜 세월 동안 SDL은 많은 상업용 비디오 게임 프로젝트와 비상업용 비디오 게임 프로젝트에 사용되었습니다.예를 들어,[48] MobyGames는 2013년에 SDL을 사용한 120개의 게임을 나열했고, SDL 웹사이트 자체는 2012년에 [49]약 700개의 게임을 나열했습니다.중요한 상업적 예로는 Angry Birds,[50] Unreal Tournament, 밸브의 Source Engine을 사용하여 개발된 게임이 있습니다. 이 게임들은 교차 플랫폼 호환성을 위해 SDL을 광범위하게 사용합니다. 오픈 소스 도메인의 게임들은 Open입니다.TTD,[51] 웨스노스[52] 또는 프리시버를 [53]위한 전투.
Linux, Mac 및 Android용 Humble Indie 번들의 크로스 플랫폼 게임 릴리스는 SDL 기반인 경우가 많습니다.
SDL은 레거시 코드를 가진 새로운 플랫폼의 이후 포트에도 자주 사용됩니다.예를 들어 PC 게임 Homeworld는 SDL을 통해 Pandora[54] 핸드헬드 및 Jagged Alliance 2 for[55] Android로 이식되었습니다.
또한 비디오 게임 이외의 프로그램 중에는 SDL을 사용하는 것도 있습니다.예를 들어 DOSBox, FUSE ZX Spectrum 에뮬레이터, VisualBoyAdvance 등의 에뮬레이터가 있습니다.
SDL을 사용한 개발용으로 여러 권의 책이 작성되었습니다(자세한 내용은 참조).
SDL은 2010년 Cadiz 대학의 libSDL을 사용한 게임 프로그래밍 워크숍이나 2015년 UTFR(Ponta Grossa) 캠퍼스에서의 게임 디자인 교육 등 멀티미디어와 컴퓨터 사이언스를 가르치는 대학 코스에서 사용됩니다.
SDL을 사용한 비디오 게임 예시
「 」를 참조해 주세요.
레퍼런스
- ^ "Index of /release". Libsdl.org. Retrieved 1 May 2022.
- ^ "Oh look, we'll have official tvOS support in SDL 2.0.5, for people that want their SDL-based games on Apple TV!". 15 September 2016.
- ^ a b c "a list of the platforms SDL supports". Libsdl.org. Archived from the original on 1 April 2016. Retrieved 9 April 2016.
- ^ a b "SDL license". Retrieved 3 March 2014.
- ^ "SDL official website". Libsdl.org. Retrieved 19 March 2010.
- ^ a b "CategoryVulkan - SDL Wiki'". wiki.libsdl.org. Retrieved 5 May 2019.
- ^ a b c d e f g h i j "SDL Language Bindings". libsdl.org. Simple DirectMedia Layer. Retrieved 13 August 2014.
- ^ "Licensing the Simple DirectMedia Layer library". Retrieved 30 January 2012.
- ^ "Simple DirectMedia Layer". 29 June 2010. Archived from the original on 29 June 2010. Retrieved 7 August 2021.
- ^ "Exploring the Galaxy". 6 April 2011. Retrieved 30 January 2012.
- ^ SDL 1.3은 zLib 라이선스, SDL 메일링 리스트, 2011년 4월 7일
- ^ "SDL 2.0 Is Coming Very Soon With New Features". Retrieved 17 August 2012.
- ^ SDL 2.0.0 발표, SDL 메일링 리스트, 2013년 8월 13일
- ^ Migration Guide - SDL Wiki'를 참조하십시오.Wiki.libsdl.org (2013년 11월 21일)2013-12-08에 취득.
- ^ "SDL 1.3 Roadmap". 14 June 2011. Retrieved 25 July 2011.
- ^ Sneddon, Joey-Elijah (5 February 2014). "Some of Linux's Most Popular Games Will Run Natively On Mir". Retrieved 19 March 2014.
- ^ Lantinga, Sam (2 January 2016). "SDL 2.0.4 Changelog". Retrieved 6 January 2016.
- ^ "SDL_SysWMinfo".
- ^ "Introduction to SDL". Retrieved 3 March 2014.
- ^ "APIByCategory".
- ^ "SDL_image 2.0". libsdl.org. Retrieved 19 July 2014.
- ^ "SDL_mixer 2.0". libsdl.org. Retrieved 19 July 2014.
- ^ "SDL_net 2.0". libsdl.org. Retrieved 19 July 2014.
- ^ "SDL_ttf 2.0". libsdl.org. Retrieved 19 July 2014.
- ^ "SDL_rtf 0.1". libsdl.org. Retrieved 19 July 2014.
- ^ "f03sdl2". GitHub. Retrieved 28 October 2019.
- ^ a b Robison, Arch D. (9 November 2015). "Go + Julia + Fourier = Open Source Frequon Invaders". software.intel.com. Retrieved 2 August 2019.
- ^ "SDL on Hackage".
- ^ "SDL2 on Hackage".
- ^ Bieler, Jonathan (30 July 2020). "jonathanBieler/SimpleDirectMediaLayer.jl". GitHub. Retrieved 8 August 2020.
- ^ SquidSinker (2 August 2020). "Example games for GameZero.jl". GitHub. Retrieved 8 August 2020.
- ^ Daly, Nathan (31 July 2019). "Example game written in julia using SDL2". GitHub. Retrieved 2 August 2019.
- ^ "SDL2 for Nim". GitHub. Retrieved 31 May 2022.
- ^ "PerlGameDev/SDL". GitHub. Retrieved 20 February 2019.
- ^ "PHP-SDL". GitHub. Retrieved 28 October 2019.
- ^ "SDL2::Raw". modules.raku.org. Retrieved 15 May 2020.
- ^ Beginning Ring Programming - From Novice to Professional Mansour Ayouni Apress.
- ^ "Using RingLibSDL — Ring 1.16 documentation".
- ^ "cl-sdl2". GitHub. Retrieved 23 November 2017.
- ^ "WhatsNew.txt". Retrieved 28 September 2020.
- ^ "[Commits] SDL: Enable building the Metal renderer by default, and weak lin..." 7 December 2017.
- ^ "SDL: README-platforms.txt@3e2f230a6d62". Hg.libsdl.org. libsdl.org. Archived from the original on 15 December 2013. Retrieved 8 December 2013.
- ^ "Using OpenGL With SDL". Retrieved 9 July 2015.
- ^ "SDL and Wayland".
- ^ Larabel, Michael (30 September 2013). "Raspberry Pi Support Added To SDL2 Library".
- ^ "SDL 1.2 Sixel". GitHub. Retrieved 9 April 2016.
- ^ "SDLPluginPort". Retrieved 11 August 2019.
- ^ "Middleware: SDL Group Description". MobyGames. 27 September 2013. Retrieved 18 May 2012.
Games that use the very portable Simple DirectMedia Layer.
- ^ "Games". libsdl.org. 18 May 2012. Archived from the original on 29 June 2010. Retrieved 18 May 2012.
- ^ "SDL Testimonials". Galaxygameworks.com. Archived from the original on 16 July 2011. Retrieved 1 February 2012.
- ^ "Development". OpenTTD. Retrieved 19 March 2010.
- ^ "CompilingWesnoth". Wesnoth. 27 February 2010. Retrieved 19 March 2010.
- ^ "SDLClient - Freeciv.org". Freeciv.wikia.com. Retrieved 19 March 2010.
- ^ may88 (23 June 2011). "Game of the Week #3 – Homeworld SDL". pandorapress.net. Retrieved 8 May 2012.
[...] released port of HomeworldSDL. Forum member Edglex enables your Pandora to experience the excellent work done by the guys at HomeworldSDL.
- ^ JA2 Stracciatella 피드백 © Jagged Alliance 2 Android Stracciatella Port RC2 출시 - 2012년 10월 23일 Wayback Machine on the Bear's Pit Forum, 2011년 10월 3일 아카이브 완료
- ^ "Features · fifengine/fifengine Wiki · GitHub". GitHub. Retrieved 9 March 2015.
- ^ "FAQ Hedgewars". hedgewars.org. Retrieved 3 October 2014.
...SDL >= 1.2.5...
- ^ "Development Details". scorched3d.co.uk. Archived from the original on 6 October 2014. Retrieved 3 October 2014.
...Simple DirectMedia Layer - SDL for cross platform game windowing...
- ^ "About the game". Retrieved 20 September 2021.
- ^ "OOlite SDL Dependencies". GitHub. 29 May 2016. Retrieved 21 September 2021.
- ^ "Roadmap - Wesnoth". www.wesnoth.org. Retrieved 9 March 2015.
- ^ "New Release: 0 A.D. Alpha 19 Syllepsis". 26 November 2015. Retrieved 20 September 2021.
Linux users, please be advised that SDL2 is now enabled by default on Linux.
- ^ "Secret Maryo Chronicles". sourceforge.net. Retrieved 3 October 2014.
... based on SDL ...
- ^ "Frozenbyte Support". trine2.com. Retrieved 1 September 2020.
추가 정보
- Alberto Garcia Serrano: Programacion de videojuegos en SDL, Ediversitas, ISBN 84-95836-08-4(스페인어)
- Ernest Pazernest Pazera:SDL, Muska & Lipman/Premier-Trade, ISBN 1-59200-030-4에 주목
- Ron Penton: 게임 프로그래머용 데이터 구조, Muska & Lipman / Premier-Trade, ISBN 1-931841-94-2 (SDL을 사용한 게임 프로그래밍 예시)
- John R. Hall: Linux 게임 프로그래밍, No Starcet, ISBN 1-886411-49-2 (Loki Games의 첫 번째 SDL 북, 아카이브 온라인 버전: PDF at the Wayback Machine (2003년 1월 22일 아카이브 완료), LaTex 소스 at the Wayback Machine (2003년 2월 14일 아카이브 완료)