정보공간_1

[6기 부산 박천경]SDL (Simple DirectMedia layer) #1 본문

IT 놀이터/Elite Member Tech & Talk

[6기 부산 박천경]SDL (Simple DirectMedia layer) #1

알 수 없는 사용자 2014. 8. 4. 18:14

SDL (Simple DirectMedia layer) #1


SDL(Simple DirectMedia Layer)은 자유 크로스 플랫폼 멀티미디어 애플리케이션 개발을 위한 API를 제공합니다. 실제로 여러가지 멀티미디어 애플리케이션과 게임이 SDL을 통해 개발 되었습니다. 이번 시간에는 간단하게 SDL의 정의와 SDL에서 제공해주는 기능 ,그리고 기존의 SDL 1.2버전이 아닌 새로운 버전 2.0버전의 SDL 2.0 을 이용해서 다루어 볼 예정입니다. 기존의 버전과 비교하여 어떤 기능을 향상 시켜주는 지 알고 간단한 window창을 한번 띄어보겠습니다.


먼저 SDL은 비디오 , 이벤트, 오디오, 쓰레드 등의 다양한 기능을 제공 해줍니다.


비디오 :  8bpp(bits per pixel). 즉, 256 컬러 이상의 원하는 해상도로 비디오 모드를 세팅할 수 있습니다. 컬러키 또는 알파 블렌딩 속성을 갖는 서페이스(surface)를 생성할 수 있습니다. 서페이스는 시스템 메모리 또는 그래픽 카드의 비디오 메모리에 존재하기 때문에 일반적인 메모리 전송보다 훨씬 빠릅니다. 


이벤트 : 이벤트를 통해 사용자 입력을 처리할 수 있습니다. 이벤트는 애플리케이션 창의 외형이 변할 때(크기변화, 최소/최대/아이콘화 등), 키보드 입력시, 마우스 입력시, 사용자 요구에 의 한 종료시에 발생합니다. 각각의 이벤트는 활성화되거나, 비활성화될 수 있습니다. 


오디오 : 8비트와 16비트, 모노 또는 스테레오 수준의 오디오를 재생할 수 있습니다. 오디오는 별도의 쓰레드를 사용해 독립적으로 수행 합니다.

 

쓰레드 : 간단한 쓰레드 생성API를 제공합니다.. 쓰레드, 뮤텍스(mutex), 세마포(semaphore), 조건변수(condition variable) 등을 생성 할 수 있는 API를 제공합니다.

 

타이머 : 천 분의 일초(millisecond) 단위의 시간(경과시간)을 얻습니다. 지정한 ms 단위의 시간동안 지연시킬 수도 있으며, 10ms 단위의주기를 갖는 타이머를 설정  수 있습니다.


다음은 새로운 버전인 2.0버전의 기능들을 간단하게 나열해 보겠습니다.


그래픽

 소프트웨어 렌더링방식 대신 D3D, OpenGL, OpenGL ES를 이용한 하드웨어 렌더링을 지원합니다.

 텍스쳐가 추가됩니다. ( 텍스쳐는 비디오 메모리에 상주, 속도가 빠름 )

 NONE, BLEND, ADD, MOD의 블렌딩 모드가 추가됩니다.

 그래픽을 리사이징해서 출력하거나, 회전시킬 수 있습니다.

 수직 동기화를 설정할 수 있습니다.

 

윈도우

 두 개 이상의 창을 띄우고, 각각의 창에 대해 렌더링할 수 있습니다.

 네모가 아닌 모양의 창을 생성할 수 있습니다.

 

플랫폼

 아이폰, 안드로이드를 지원합니다.

 

입력

 멀티 터치 입력을 지원합니다.

 게임 컨트롤러 입력을 지원합니다.

 모바일 디바이스를 위한 가속도 센서를 지원합니다.

 

기능

 사각 영역에 대한 간단한 충돌 검사 함수들이 추가됩니다.

 멀티 쓰레딩을 위한 atomic 함수들이 추가됩니다.

 클립보드 관련 함수들이 추가됩니다.


자, 이제 SDL에 대한 소개를 마치고 SDL설정 방법에 대해서 설명하겠습니다. 

먼저 보시는 그림과 같이http://www.libsdl.org/hg.php 로 접속하여서 자신의 컴퓨터 버전에 맞게

 SDL-2.0 zip버전을 다운로드 하면 됩니다.



다운을 받으셨다면 빈 프로젝트를 만들어서 프로젝트를 만들어 보겠습니다.

프로젝트의 속성-> 구성속성  VC++ Directories 에 있는 포함 디렉터리와 참조 디렉터리에 각각 참조 합니다. 그 다음 링커  입력에  추가 종속성에 "SDL2.lib" 기입해 줍니다.





이제 모든 설정이 끝났습니다.다음과 같이 코드를 작성하게 되어 성공을 띄우시게 되면 성공하신 겁니다.SDL_INIT_EVERYTHING  은 SDL의 모든 환경을 초기화해 사용할 수 있게 해주는 플래그 입니다.

SDL_Quit(); 함수를 이용하여 SDL이 정상 종료 시키게 됩니다.


이상으로 SDL에 대해서 간단히 맛을 한번 보았습니다. 

다음 포스트에서는 SDL을이용하여 간단한 이벤트 처리와 영상을 띄워 보겠습니다.