SDL는 C 프로그래밍 언어로 짜여진 크로스플랫폼 멀티미디어 라이브러리이다. 이 라이브러리는 비디오, 오디오, 사용자 입력 등의 계층을 추상화하여, 리눅스, 마이크로소프트 윈도, 맥 OS X 등 여러 운영 체제에서 실행이 가능하도록 한다. 이 라이브러리는 비디오, 이벤트, 디지털 오디오, CD-ROM, 사운드, 스레드, 공유 객체 불러오기, 네트워킹, 타이머를 관리한다. 이 라이브러리는 내부적으로 C로 작성되어 있으며, 대상 플랫폼에 따라 C++나 오브젝티브-C도 지원하며 C의 API를 제공함으로써 다른 언어와의 결합을 지원한다.
- SDL_image — 다수의 이미지 포맷 지원
- SDL_mixer — 복잡한 오디오 함수 (주로 사운드 믹싱을 위해 존재)
- SDL_net — 네트워킹 지원
- SDL_ttf — 트루타입 글꼴 렌더링 지원
- SDL_rtf — 단순 서식 있는 텍스트 포맷 렌더링
역사
SDL은 다양한 환경하에서 작동할수 있도록 설계되어져 있으며, 모두 같은 소스코드를 사용할 수 있는 구조로 되어져 있습니다. 윈도우에서 작성한 코드를 그대로 리눅스에서 컴파일 하여 실행하도록 할 수 있으며, 심지어 맥이나 BeOS 등에서도 구동을 보장받을 수 있습니다. 공식적으로 Win32 / 리눅스 / MacOS / MacOS X 에서의 작동을 보장하며, Solaris / IRIX / FreeBSD / QNX / OSF/True64 등의 플랫폼에서도 비공식적으로 포팅되어져 있습니다.
1998년 초에 처음 출시된 이 라이브러리는 Sam Lantinga가 로키 소프트웨어용으로 작업하는 동안 만들어냈다. 그는 윈도 응용 프로그램을 매킨토시로 포팅하는 동안 이 개념을 떠올렸다. 그 뒤 SDL을 이용하여 둠을 BeOS로 포팅하였다. 일부 다른 자유 라이브러리들이 SDL에 맞추어 개발되었는데, 이를테면 SMPEG와 OpenAL이 있다. 그는 2008년에 갤럭시 게임웍스를 설립하여 SDL의 상업적인 지원을 돕기도 했으나 이 기업 계획은 시간 제한으로 인해 보류된 상태.
SDL 1.3은 SDL 1.2 코드 기반의 주요 업데이트로 자리잡았다. 1.2 API의 여러 부분을, 다중 입출력 옵션을 위한 더 일반적인 지원으로 대체하고 있다. 추가되는 기능으로는 이를테면 다중 창 지원, 다중 입력 장치 지원 (다중 마우스, 다중 키보드 등), 하드웨어 가속 2차원 그래픽, 더 나은 유니코드 지원이 있다. 그 뒤 1.3/2.0으로 브랜치가 이동됨에 따라[4] SDL 1.3 개발이 끝나면 끝으로 SDL 2.0이 될 예정이다.[5] SDL 1.3은 zlib 라이선스이므로 SDL 1.2와 달리 상용 클로즈드 소스 프로젝트에 정적 링크하여 자유롭게 이용할 수 있다.[6]
구조
라이브러리는 비디오, 오디오, CD-ROM, 조이스틱, 타이머.. 하부 시스템으로 나뉜다. 이러한 낮은 수준의 기본적인 지원뿐 아니라 다음과 같은 기능들도 몇 가지 더 지원한다. 이들은 "표준 라이브러리"를 이루고, 공식 웹사이트에서 제공되며 공식 문서에 포함되어 있다
장점
멀티 플랫폼을 지원하며, 하나의 소스코드로 여러가지 플랫폼에서 컴파일이 가능하다는 것입니다. 즉, 크로스 플랫폼(Cross-Platform) 멀티미디어 라이브러리 인 셈입니다.
SDL은 화면 제어는 물론, 시스템의 몇몇 이벤트 / 사운드 / CD-Rom 제어 / 쓰레드 / 타이머 등의 멀티미디어 관련 라이브러리도 함께 포함하고 있습니다.
SDL은 여러가지 확장을 통해 더 쉽고 강력하게 사용할 수 있도록 되어져 있습니다. jpg, png와 같은 이미지 파일을 불러오고 사용하기 위한 SDL_Image, 네트워크 기능을 활용하기 위한 SDL_Net, mp3, ogg 같은 사운드 파일을 다루기 위한 SDL_Mixer 등등... 여러가지 확장을 통해 더 쉽고 빠르게 게임을 개발 할 수 있습니다.
SDL은 OpenGL을 공식적으로 지원하며, SDL과 OpenGL을 이용하여 3D 게임을 쉽고 빠르게 제작할 수 있습니다. 심지어 OpenGL 학습을 위한 용도로도 SDL을 이용할 수 있습니다.
SDL은 여러 아마추어 개발자들이 사용하고, 충분히 그 성능 입증을 받아왔습니다. 따라서 세계 곳곳에 SDL 관련 정보가 아주 많으며, IGF 같이 굵직한 아마추어 게임 개발 대회에서도 SDL 사용을 인정해 주고 있습니다.
SDL은 어떤 환경하에서도 컴파일하고 실행해 볼 수 있으며, 쉽습니다.
SDL은 OS에 비 종속적인만큼, 라이브러리 간의 호환성이 100% 유지되어지지 않습니다. 몇몇 시스템 상에서는 풀 스크린 전환 함수가 제대로 작동하지 않기도 하며, 리눅스의 OpenGL과 윈도우의 OpenGL 간에도 동기화 옵션이 작동 되고, 작동 되지 않는 등의 호환성 문제는 여전히 남습니다.
철저하게 게임 제작을 위해 개발된 API이기 때문에 여러가지 윈도우 시스템에 종속적인 기능을 사용할 수 없습니다. 윈도우 창에 메뉴바를 단다거나, 트레이에 아이콘을 추가한다거나 하는 등의 옵션은 윈도우 시스템에 맡겨야 합니다.
https://www.libsdl.org/
https://bearsopenstory.tistory.com/entry/SDL-SDLSimple-DirectMedia-Layer-에-대하여 [곰들의 열린 이야기]