biud436/Initial2D

SDL2로 포팅하기

Closed this issue · 0 comments

개요

현재 게임 엔진 상에서 GDI에 종속된 코드가 많다. 하지만 이미 사장된 기술이며 취업 전선에 뛰어들기 위해 의도적으로 기술을 보여주기 위한 의도가 아니라면 장기적으로 SDL2로 교체하는 것이 좋다고 생각한다.

SDL2의 전형적인 코드는 인터넷이나 책에서 쉽게 구할 수 있으므로 생략한다. 구현은 간단하지만 빌드 시스템 구성은 관련 학과를 나오지 않았다면 조금 까다로울 수 있다.

	if (SDL_Init(SDL_INIT_EVERYTHING) < 0) 
	{
		cerr << "초기화 오류" << endl;
		return -1;
	}
        // 생략 ...

GDI에서 폰트 묘화는 TTF 파일로부터 비트맵 폰트 묘화를 하는 GetGlyphOutlineW라는 조금 RAW한 API를 사용하여 힘들게 구현되었다. 하지만 SDL2에서는 SDL_ttf의 TTF_RenderUTF8_Blended를 이용하면 화면에 쉽게 묘화할 수 있다.

이미지 묘화는 libpng를 이용하여 png 이미지를 bmp로 디코딩한 후 구현되었다. 그러나 SDL2의 SDL_image를 쓰면 쉽게 불러올 수 있다. 기술적으로는 전자를 보여주는 것이 낫지만 게임 프레임워크로써의 매력이 떨어지므로 SDL_image로 바꾸는 것이 좋을 것이다.

파일 입출력은 안드로이드가 주축이므로 SDL_RWseek나 SDL_RWread, SDL_RWclose, SDL_RWwrite 같은 APK 내부의 파일을 읽고 쓰는 API를 사용해야 한다. 기본 게임 엔진에 파일 시스템을 클래스로 따로 캡슐화 해놓지 않았기 때문에 포팅에는 시간이 걸릴 것으로 생각 된다.