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

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
심플 다이렉트미디어 레이어
Simple DirectMedia Layer
개발자 Sam Lantinga
최근 버전 2.0.1 / 2013년 10월 24일, 496일 경과
프로그래밍 언어 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-03-19에 확인함. 
  2. “Exploring the Galaxy”. 2011년 4월 6일. Jan 30, 2012에 확인함. 
  3. “SDL 1.3 Roadmap”. 2011년 6월 14일. 2011년 7월 25일에 확인함. 
  4. “FAQs: General”. 2009년 10월 10일. 2011년 7월 24일에 확인함. 
  5. “Licensing the Simple DirectMedia Layer library”. Jan 30, 2012에 확인함. 

바깥 고리[편집]