0. SDL2 개발 환경 설정하기
SDL2 개발 라이브러리 내려받기
SDL은 Simple DirectMedia Layer의 약자로 밸브 게임 社의 주도 아래 유지 보수하고 있는
다목적 멀티미디어 라이브러리다.
C언어로 작성되어 있어서 사실상 거의 모든 플랫폼으로 빌드할 수 있고
그래픽뿐 아니라 오디오, 파일 시스템 등 게임 개발에 필요한 기능들을 모두 제공한다.
SDL1에서 SDL2로 업데이트되면서 상대적으로 무거워졌다는 의견이 많았으나
지금 시대에서는 SDL2도 가벼운 라이브러리에 들어간다.
SDL2를 이용하면 간단하게 그래픽이 들어간 작업물을 제작할 수 있다.
그걸 이용해서 코드로 작성한 알고리즘을 시각적으로 이해하는 것을 목표로 한다.
이제 SDL2를 설치해보자.
▼ SDL2 공식 홈페이지
www.libsdl.org/download-2.0.php
우리는 비주얼 스튜디오에서 개발할 예정이기 때문에 SDL2-devel-2.0.14-VC.zip을 내려받는다.
▼ MinGW(GCC 컴파일러)의 경우엔 공식 홈페이지에서 받을 수 있다.
관리하기 쉬운 곳에 압축 풀기
OpenGL 개발환경 설정하기와 크게 다르지 않다.
추가 라이브러리들을 관리하는 폴더에 SDL2로 정리해둔다.
▼ 팀 작업이 아니라면 자신이 편한 것이 제일 최고다.
비주얼 스튜디오 프로젝트 생성하기
SDL2 프로젝트를 관리할 비주얼 스튜디오 설루션을 생성한다.
설루션 이름과 프로젝트 이름은 본인이 편한 대로 설정한다.
▼ SDL2로 제작하는 예제들은 한 설루션에서 관리한다.
추가 포함 경로 설정하기
의도적으로 수정하지 않는 한 압축을 풀었을 때 SDL2 폴더 안에 바로 include 폴더가 위치한다.
C/C++ 탭을 누르고 추가 포함 경로에 SDL2\include를 입력한다.
▼ 추가 포함 경로(SDL2\include)를 입력한다.
추가 라이브러리 경로 설정하기
include 폴더와 마찬가지로 압축을 풀었을 때 SDL2 폴더 안에 바로 lib폴더가 위치한다.
우리는 64비트로 개발할 것이기 때문에 라이브러리 버전 또한 64비트를 사용한다.
Linker 탭을 누르고 추가 라이브러리 경로에 SDL2\lib\64를 입력한다.
▼ 추가 포함 경로(SDL2\include)를 입력한다.
추가 종속성 설정하기
SDL2는 기본적으로 SDL2.lib와 SDL2 main.lib 두 개의 추가 종속성을 가진다.
이후 SDL2의 부가 기능들을 추가로 사용해야 할 때에는 계속해서 추가해줘야 하지만
지금은 두 개로 충분하다.
▼ 추가 포함 경로(SDL2\include)를 입력한다.
이것으로 모든 SDL2 개발 환경 설정은 완료되었다.
이제 정상적으로 SDL2가 작동하는지 예시 코드를 작성해본다.
SDL2 확인 코드 작성하기
예시 코드는 SDL2 포럼에서도 자주 사용되는 기본 확인 코드를 그대로 복붙 하여 사용한다.
다음 글에서 이 확인 코드가 어떠한 역할을 하는지 차근차근 살펴보고
지금은 SDL2가 정상적으로 작동하는지 먼저 확인해본다.
▼ SDL2 확인 코드
//Using SDL and standard IO
#include <SDL.h>
#include <cstdio>
//Screen dimension constants
const static int SCREEN_WIDTH = 640;
const static int SCREEN_HEIGHT = 480;
int main(int argc, char* args[])
{
//The window we'll be rendering to
SDL_Window* window = NULL;
//The surface contained by the window
SDL_Surface* screenSurface = NULL;
//Initialize SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
}
else
{
//Create window
window = SDL_CreateWindow("SDL INIT", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (window == NULL)
{
printf("Window could not be created! SDL_Error: %s\n", SDL_GetError());
}
else
{
//Get window surface
screenSurface = SDL_GetWindowSurface(window);
//Fill the surface white
SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
//Update the surface
SDL_UpdateWindowSurface(window);
//Wait two seconds
SDL_Delay(2000);
}
}
//Destroy window
SDL_DestroyWindow(window);
//Quit SDL subsystems
SDL_Quit();
return 0;
}
실행 결과
▼ 하얀 SDL INIT 창이 뜬다면 성공이다.
창이 2초 뒤에 사라진다고 놀라지 말자.
SDL2 확인 코드에서 2초 뒤에 창이 정상적으로 종료되도록 작성해두었다.
프로그램은 시작과 종료까지 모두 오류가 없어서 정상적으로 작동하는 것이다.