(+)분류 : 가져온 문서/넥스32 위키

Simple DirectMedia Layer (SDL, 심플 다이렉트미디어 레이어)는 C 프로그래밍 언어로 짜여진 크로스플랫폼의 멀티미디어 라이브러리이다. GNU GPL 기반의 자유 공개 소프트웨어이며, 다양한 플랫폼에서 이 라이브러리를 이용해서 비디오, 오디오, 입력 장비의 계층을 추상화하여 크로스플랫폼 상에서 복잡한 작업을 최소화하여 제어하는 것이 가능하다. 리눅스, FreeBSD, 안드로이드 등의 오픈소스 OS는 물론이고 윈도우, 맥OS X 등의 상용 OS까지 모두 지원함으로서 상용 프로젝트에서도 널리 사용될 정도의 범용적 위치를 획득하고 있다.
1. 상세 ✎ ⊖
DOS를 비롯한 텍스트 기반의 인터페이스를 사용하던 시절에는 그래픽모드를 기동하기 위해서 각자의 프로그램에서 그래픽모드 초기화와 사운드 드라이버 별 시스템 관리를 직접해왔다. 그러나 시대가 GUI 환경으로 전환되고 통합된 기능으로 OS에서 시스템을 관리하게 되었고, 그래픽카드를 비롯한 각종 그래픽가속장치와 기능이 확장되면서 이를 일일이 프로그램 별로 제작-관리하기가 어려워지게 되었다. SDL은 이러한 뿔뿔이 흩어진 환경차이를 극복하고 다수의 환경에서 동일한 API를 통해 시스템을 제어할 수 있도록 해주는 개발 도구이다.
1998년 로키 소프트웨어에서 일하던 샘 랜팅가가 윈도우용 프로그램을 매킨토쉬용으로 이식하던 중 떠오른 아이디어를 바탕으로 제작되었다. 그는 자신이 만든 SDL 초판을 가지고 BeOS로 둠을 이식하는데 성공했고, 이를 통해 널리 알려지게되었다.
SDL은 그래픽처리와 사운드처리, 입력장치처리, CD-ROM을 비롯한 하드웨어 제어를 위한 각종 장치 제어 API를 제공함으로서 각 플랫폼에 얽매이지않고 SDL 표준에 맞추는 것만으로 원하는 제어기능을 크로스 플랫폼으로 제공하는 것을 가능케 한다. API를 통해 제어하기 때문에 코드 전처리에서 지정해주는 것만으로 CPU별로 다른 Endian 문제를 고려할 필요가 없으며 쓰레드 생성기능으로 멀티미디어 프로그래밍에서 필수적으로 필요한 동시적으로 운용되는 프로그램 개발에도 많은 편의성을 제공한다.
가장 널리사용되는 유사한 기능으로 마이크로소프트에서 제공하는 DirectX를 대응시키면 쉽게 이해할 수 있다. 3D분야를 제외한 DirectX의 기능 대부분을 지원하며(3D는 OpenGL을 이용) 이를 각각의 플랫폼에 맞는 형태로 운용해 최적의 성능을 낼 수 있는 형태로 운용한다.
이러한 특성때문에 게임, 그래픽 어플리케이션, 비디오 및 오디오를 포함한 미디어 플레이어, X윈도우 구현 등에 널리 사용되고 있다.
1998년 로키 소프트웨어에서 일하던 샘 랜팅가가 윈도우용 프로그램을 매킨토쉬용으로 이식하던 중 떠오른 아이디어를 바탕으로 제작되었다. 그는 자신이 만든 SDL 초판을 가지고 BeOS로 둠을 이식하는데 성공했고, 이를 통해 널리 알려지게되었다.
SDL은 그래픽처리와 사운드처리, 입력장치처리, CD-ROM을 비롯한 하드웨어 제어를 위한 각종 장치 제어 API를 제공함으로서 각 플랫폼에 얽매이지않고 SDL 표준에 맞추는 것만으로 원하는 제어기능을 크로스 플랫폼으로 제공하는 것을 가능케 한다. API를 통해 제어하기 때문에 코드 전처리에서 지정해주는 것만으로 CPU별로 다른 Endian 문제를 고려할 필요가 없으며 쓰레드 생성기능으로 멀티미디어 프로그래밍에서 필수적으로 필요한 동시적으로 운용되는 프로그램 개발에도 많은 편의성을 제공한다.
가장 널리사용되는 유사한 기능으로 마이크로소프트에서 제공하는 DirectX를 대응시키면 쉽게 이해할 수 있다. 3D분야를 제외한 DirectX의 기능 대부분을 지원하며(3D는 OpenGL을 이용) 이를 각각의 플랫폼에 맞는 형태로 운용해 최적의 성능을 낼 수 있는 형태로 운용한다.
이러한 특성때문에 게임, 그래픽 어플리케이션, 비디오 및 오디오를 포함한 미디어 플레이어, X윈도우 구현 등에 널리 사용되고 있다.
2. 주요 기능 ✎ ⊖
SDL은 표준적인 기능처리를 위한 각종 API를 제공한다. 그 중에 가장 널리 사용되는 것은 다음과 같다.
그 외에도 다양한 기능이 있으며, 비표준적인 기능을 제공하는 다수의 프로젝트도 운용되고 있다.
- SDL_image : 다양한 이미지 포맷을 지원하기 위한 기능
- SDL_mixer : 다양한 사운드 처리를 위한 기능. 주로 사운드 믹서로서 사용.
- SDL_net : 네트워크 사용을 위한 기능.
- SDL_ttf : 트루타입 폰트 렌더링을 위한 기능.
- SDL_rtf : Rich Text Format, 즉 워드패드 같은 리치 텍스트 렌더링을 위한 기능.
그 외에도 다양한 기능이 있으며, 비표준적인 기능을 제공하는 다수의 프로젝트도 운용되고 있다.
3. 시스템별 차이 ✎ ⊖
이 부분은 사실 사용자에게는 별반 와닿지 않을 부분으로, SDL이 구동할 때 어떤 과정을 통해서 시스템에 접근하는지를 설명하는 것 뿐이다. 때문에 사용자가 이런 처리에 대해서 이해못한다고 문제가 생기거나 하지는 않는다.
3.1. 윈도우 ✎ ⊖
MS 윈도우는 기본적으로 하드웨어 제어를 윈도우 자체와 DirectX를 통해서만 지원하기 때문에 SDL도 GDI나 waveOut API와 함께 DirectX를 이용해 처리를 한다. 안정화 모드에서는 GDI와 waveOut 기능을 이용해서 속도보다는 안정적인 기본 출력 기능을 사용하며, 고성능 모드의 경우에는 DirectDraw와 DirectSound를 이용해서 가속된 하드웨어 성능을 사용한다. 즉 DirectX에 호환되는 하드웨어 가속기능이라면 SDL에서도 동일하게 사용할 수 있다.
3.2. 유닉스 ✎ ⊖
리눅스와 유닉스 계열의 경우에는 비디오 모드는 보통 X11을 이용해서 구동하며, XFree86 DGA 확장기능을 이용해서 화면을 출력한다. 전체화면 가속의 경우에는 새로운 MTRR 가속 방식을 사용하며, 사운드는 OSS API를 이용해서 출력한다. 최신버전에서는 OpenAL도 지원한다.
3.3. BeOS ✎ ⊖
BeOS 및 하이쿠OS의 경우에는 비디오 디스플레이를 위해서는 BDirectWindow를, 사운드를 위해서는 BSoundPlayer가 사용된다.
3.4. 맥OSX ✎ ⊖
맥OSX의경우에는 비디오 디스플레이를 위해서 Carbon 과 DrawSprockets이 사용되었으나, 현재는 Quartz를 사용한다. 사운드를 위해서는 SoundManager API가 사용된다.
4. 외부 ✎ ⊖
이 문서의 내용 중 전체 또는 일부는 넥스32 위키에서 가져왔으며 GNU Free Documentation License 1.3에 따라 이용할 수 있습니다.
본 문서의 원본은 링크에서 확인할 수 있습니다.
본 문서의 원본은 링크에서 확인할 수 있습니다.