심플 다이렉트미디어 레이어

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
심플 다이렉트미디어 레이어
Simple DirectMedia Layer
개발자 Sam Lantinga
최근 버전 2.0.1 / 2013년 10월 24일, 301일 경과
프로그래밍 언어 C
운영 체제 크로스 플랫폼
플랫폼 윈도, OS X 10.5 이상, 리눅스 2.6 이상, iOS 3.1.3 이상, 안드로이드 2.3.3 이상, FreeBSD 8.4 이상
종류 API
라이선스 1.2 GNU LGPL / 2.0 zlib 라이선스
웹사이트 www.libsdl.org
Simple DirectMedia Layer
SDL 플랫폼의 추상 계층

심플 다이렉트미디어 레이어(Simple DirectMedia Layer), SDLC 프로그래밍 언어로 짜여진 크로스플랫폼 멀티미디어 라이브러리이다. 이 라이브러리는 비디오, 오디오, 사용자 입력 등의 계층을 추상화하여, 리눅스, 마이크로소프트 윈도, 맥 OS X 등 여러 운영 체제에서 실행이 가능하도록 한다. 이 라이브러리는 비디오, 이벤트, 디지털 오디오, CD-ROM, 사운드, 스레드, 공유 객체 불러오기, 네트워킹, 타이머를 관리한다.[1]

구조[편집]

SDL 라이브러리 그 자체는 매우 단순하다. 이 라이브러리에는 몇 가지 하부 시스템으로 나뉘는데, 이를테면 비디오, 오디오, CD-ROM, 조이스틱, 타이머가 있다. 이러한 낮은 수준의 기본적인 지원뿐 아니라 다음과 같은 기능들도 몇 가지 더 지원한다. 이들은 "표준 라이브러리"를 이루고, 공식 웹사이트에서 제공되며 공식 문서에 포함되어 있다:

  • SDL_image — 다수의 이미지 포맷 지원
  • SDL_mixer — 복잡한 오디오 함수 (주로 사운드 믹싱을 위해 존재)
  • SDL_net — 네트워킹 지원
  • SDL_ttf트루타입 글꼴 렌더링 지원
  • SDL_rtf — 단순 서식 있는 텍스트 포맷 렌더링

예제[편집]

#include "SDL/SDL.h"
 
int main(int argc, char *args[])
{
    // SDL 비디오 시스템 초기화
    if (SDL_Init(SDL_INIT_VIDEO) == -1)
    {
        return 1;    
    }
 
    // 화면 구성
    SDL_Surface *screen = NULL;
    screen = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
 
    // 화면 구성에 오류가 있으면
    if (screen == NULL)
    {
        return 1;
    }
 
    // 창 위치 설정
    SDL_WM_SetCaption("간단 SDL 응용 프로그램!", NULL);
 
    // 프로그램의 종료 대기
    bool quit = false;
 
    // 프로그램이 아직 종료 상황이 아닌 동안
    while (quit == false)
    {
        // 이벤트가 있는 동안
        while (SDL_PollEvent(&event))
        {
            // 사용자가 창의 X 단추를 눌러서 프로그램을 끝낼 때
            if (event.type == SDL_QUIT)
            {
                // 프로그램 끝내기
                quit = true;
            }    
        }
 
        // 화면 채우기
        SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF));
 
        // 화면 갱신
        if (SDL_Flip(screen) == -1)
        {
            return 1;    
        }
    }
 
    // SDL 끝내기
    SDL_Quit();
 
    return 0;
// 위 예제는 SDL2.0기반으로 작업시 오류가 발생할 수 있음
}

역사[편집]

SDL 작업을 하는 모습

1998년 초에 처음 출시된 이 라이브러리는 샘 랜틴가(Sam Lantinga)가 로키 소프트웨어용으로 작업하는 동안 만들어냈다. 그는 윈도 응용 프로그램을 매킨토시로 포팅하는 동안 이 개념을 떠올렸다. 그 뒤 SDL을 이용하여 BeOS로 포팅하였다. 일부 다른 자유 라이브러리들이 SDL에 맞추어 개발되었는데, 이를테면 SMPEGOpenAL이 있다. 그는 2008년에 갤럭시 게임웍스를 설립하여 SDL의 상업적인 지원을 돕기도 했으나 이 기업 계획은 시간 제한으로 인해 보류된 상태이다.[2]

SDL 1.3은 SDL 1.2 코드 기반의 주요 업데이트로 자리잡았다. 1.2 API의 여러 부분을, 다중 입출력 옵션을 위한 더 일반적인 지원으로 대체하고 있다. 추가되는 기능으로는 이를테면 다중 창 지원, 다중 입력 장치 지원 (다중 마우스, 다중 키보드 등), 하드웨어 가속 2차원 그래픽, 더 나은 유니코드 지원이 있다. 그 뒤 1.3/2.0으로 브랜치가 이동됨에 따라[3] SDL 1.3 개발이 끝나면 끝으로 SDL 2.0이 될 예정이다.[4] SDL 1.3은 zlib 라이선스이므로 SDL 1.2와 달리 상용 클로즈드 소스 프로젝트에 정적 링크하여 자유롭게 이용할 수 있다.[5]

갤러리[편집]

같이 보기[편집]

주석[편집]

  1. SDL official website. Libsdl.org. 2010년 3월 19일에 확인.
  2. Exploring the Galaxy (April 6, 2011). Jan 30, 2012에 확인.
  3. SDL 1.3 Roadmap (14 June 2011). 25 July 2011에 확인.
  4. FAQs: General (10 October 2009). July 24, 2011에 확인.
  5. Licensing the Simple DirectMedia Layer library. Jan 30, 2012에 확인.

바깥 고리[편집]