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

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

심플 다이렉트미디어 레이어
Simple DirectMedia Layer
개발자Sam Lantinga
안정화 버전
2.0.10[1] / 2019년 7월 25일(4년 전)(2019-07-25)
저장소
프로그래밍 언어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 플랫폼의 추상 계층

이 라이브러리는 내부적으로 C로 작성되어 있으며, 대상 플랫폼에 따라 C++오브젝티브-C도 지원하며 C의 API를 제공함으로써 다른 언어와의 결합을 지원한다.[3]

구조 편집

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

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

언어 바인딩 편집

SDL 2.0 라이브러는 C, C++, 파스칼[3], (sdl.perl.org를 통해)[3], 파이썬(PySDL2.0을 통해)[3], C#[3], 루아[3], OCaml[3], 러스트, Nim, 발라, 지니를 위한 언어 바인딩이 있다.

예제 편집

#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의 상업적인 지원을 돕기도 했으나 이 기업 계획은 시간 제한으로 인해 보류된 상태이다.[4]

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

갤러리 편집

같이 보기 편집

각주 편집

  1. “Simple DirectMedia Layer - SDL version 2.0.10 (stable)”. Libsdl.org. 2019년 7월 26일에 확인함. 
  2. “SDL official website”. Libsdl.org. 2010년 3월 19일에 확인함. 
  3. “SDL Language Bindings”. 《libsdl.org》. Simple DirectMedia Layer. 2014년 8월 13일에 확인함. 
  4. “Exploring the Galaxy”. 2011년 4월 6일. 2012년 1월 30일에 확인함. 
  5. “SDL 1.3 Roadmap”. 2011년 6월 14일. 2011년 7월 25일에 확인함. 
  6. “FAQs: General”. 2009년 10월 10일. 2011년 7월 24일에 확인함. 
  7. “Licensing the Simple DirectMedia Layer library”. 2012년 1월 30일에 확인함. 

외부 링크 편집