프로그래밍

GP2X 에서 사용된 SDL (Simple DirectMedia Layer) 이란?

봄바다별하늘 2006. 9. 4. 22:55

GP2X에서 SDK를 공개했는데, 관련 내용에 SDL이라는 용어가 있어서 찾아보았다.

하늘아이 (shilph)님의 블로그에서 가져왔습니다.

좋은 정보 감사합니다.

 

SDL (Simple DirectMedia Layer) 이란?

SDL은 여러종류의 OS에서 게임을 개발하기에 적합한 라이브러리이다.

 

 

블로그에 나와 있는 내용을 보면 아래와 같다.

>매우 간단하게 SDL이 지원하는 유명한 OS를 들자면 윈도우, 리눅스, 도스, 맥OS 클래식, 맥OS X, 유닉스, FreeBSD (BSD 중 하나, 무료 OS 중에 하나이다), 솔라리스 (썬에서 나온 OS) 가 있고, 

비공식 지원 OS 중에서는 윈도우 CE (PDA용 OS 이다.), 심비안 (유럽쪽 휴대폰/PDA의 OS), 팜OS, 드림캐스트, PS2, GP32 (한국형 휴대 게임기이다!!!)

공식 홈페이지에 나와 있는 내용은 아래와 같다.

Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."

SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. The code contains support for AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, and OS/2, but these are not officially supported.

SDL

 

 

이하 펀글 출처 : http://blog.naver.com/shilph/4987844

=============================================================================

아쉽게도 한국의 대부분의 아마추어 혹은 프로 게임 개발자 중에서는 윈도우와 휴대폰 이외의 게임의 개발과는 상당히 거리가 멀다 OTL

덕분에 사용하는 라이브러리란 DirectX (이하 DX), CDX 로 매우 쉽게 압축이 되고 만다 OTL

물론 종종 DX가 싫어서 OpenGL을 사용하는 예도 있지만 (예: PS2 게임 개발 등의 이유) 사실 거의 대부분은 DX 계열들.

OpenGL을 쓴다고 해도 단점이 있는데 OpenGL은 게임용 SDK (Software Develope Kit) 는 아니라는 사실.

물체만 화면에 쏘아준다고 게임이 되는 것은 아니다.

그런 관계로 거의 대부분 OpenGL + Win32 API 를 이용하는 경우가 많다.

하지만 그렇게 되면 거의 대부분의 OS에서 돌아가는 OpenGL의 취지에서 벗어나게 되는 것.

그래서 나온 대체 SDK 중 가장 유명한 것이 바로 Simple DirectMedia Layer 이다.

그야 말로 비윈도우 계열의 게임을 개발하는 사람들에게는 최대의 희망인 것이다.

참고로 매우 간단하게 SDL이 지원하는 유명한 OS를 들자면 윈도우, 리눅스, 도스, 맥OS 클래식, 맥OS X, 유닉스, FreeBSD (BSD 중 하나, 무료 OS 중에 하나이다), 솔라리스 (썬에서 나온 OS) 가 있고, 

비공식 지원 OS 중에서는 윈도우 CE (PDA용 OS 이다.), 심비안 (유럽쪽 휴대폰/PDA의 OS), 팜OS, 드림캐스트, PS2, GP32 (한국형 휴대 게임기이다!!!) 가 있다.

이 정도만 되도 벌써 무시무시한 포-스가 느껴질터 -_-y

사실 뭐니뭐니 해도 리눅스용 게임 개발자에게는 최대의 SDK 인 것이다.

(물론 얼마전부터 나온 ClanLib 이라는 SDK도 있지만 유럽/아시아권의 사람에게는 문제가 있다. 이는 아래에 다시 설명하겠다.)

덕분에 DX로 코딩한 게임은 윈도우 이외의 OS에서는 돌릴 수 없지만, SDL로 코딩한 게임은 아주 조금의 수정만 가하면 윈도우만이 아니라 다른 OS 에서도 돌릴 수 있다.

특히 SDL의 경우 오픈 라이브러리 프로젝트도 있어, 각종 SDL 지원 라이브러리가 나와 있다는 점도 이채롭다.

그중 가장 유명한 SDL_image는 bmp 이외에도 png, tga, tiff, pcx, jpeg 등의 그림을 지원하고, SDL_mixer는 wav 이외에 ogg, mp3, mod, mid 등의 음악을, SDL_ttf 는 유니코드와 트루타입 글꼴을 지원한다.

바로 이 SDL_ttf 덕분에 한글, 한문, 일어 등도 굉장한 어려움 없이 지원할 수 있다.

물론 SDL과 OpenGL을 동시에 사용할 수도 있는데 이렇게 되면 멋진 3D 게임도 충분히 구현가능하게 된다.

또한 SDL은 c/c++ 이외에도, 자바, PHP, Perl, 파이썬, ML 등과 같은 다양한 언어도 지원한다.

즉, c/c++ 를 모르고도 일단 게임은 만들 수 있다는 것이다!!!

(물론 포인터가 없으므로 고생 좀 하겠지만 -_-;;;)

 

SDL의 공식 싸이트는 http://www.libsdl.org 이고, VC 6/7(.Net) 에서 돌려보고 싶은 사람은 http://pgdc.purdue.org/sdltutorial/sdl_setup.html 을 보면 쉽게 따라 할 수 있을 것이다.

(참고로 VC 7 을 기준으로 되어 있는데, 처음에 새로 만들기 -> Win 32 어플리케이션 -> empty project 를 선택 하고, 프로젝트가 만들어 지면 프로젝트 -> 세팅 -> C/C++ 탭 에서 code generation 을 선택한 뒤, single DLL 대신 멀티 쓰레드 DLL을 선택하면 된다. 그리고 exe 파일이 있는 디렉토리에 sdl.dll 이라는 파일을 넣어 주는 것도 잊지 말고)

 

생각보다 쉽고 강력하며 거의 대부분의 플랫폼을 지원하는 SDL.

혹시라도 윈도우 이외의 OS에서도 자신이 만든 게임을 돌려보고 싶은 사람이 있는가?

아니면 C/C++ 의 어려움에 쓰러지려고 하는 사람이 있는가?

SDL은 그 해답이 될 것이다.

===========================================

출처 http://blog.naver.com/shilph/4987844