[c++] SDL GUI 구현

SDL은 Simple DirectMedia Layer의 약자로, 2D 그래픽 및 오디오를 처리하기 위한 크로스 플랫폼 개방형 소프트웨어 개발 라이브러리이다. 이에 대해서 코드 스니펫을 통해 C++을 사용하여 간단한 GUI를 구현하는 방법에 대해 설명하겠다.

필수 요구사항

SDL을 사용하기 위해서는 먼저 SDL을 설치해야 한다. 아래의 링크를 통해 각 플랫폼에 맞는 방법으로 SDL을 설치할 수 있다.

GUI 구현하기

아래는 간단한 버튼과 텍스트를 포함하는 GUI를 SDL을 사용하여 구현한 코드이다.

#include <SDL.h>
#include <SDL_ttf.h>

int main(int argc, char* args[]) {
    // SDL 초기화
    SDL_Init(SDL_INIT_VIDEO);
    TTF_Init();

    // 창 생성
    SDL_Window* window = SDL_CreateWindow("SDL GUI", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, 0);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);

    // 폰트 설정
    TTF_Font* font = TTF_OpenFont("arial.ttf", 24);

    // 텍스트 렌더링
    SDL_Color textColor = { 255, 255, 255, 255 };
    SDL_Surface* textSurface = TTF_RenderText_Solid(font, "Hello, SDL!", textColor);
    SDL_Texture* textTexture = SDL_CreateTextureFromSurface(renderer, textSurface);

    // 버튼 렌더링
    SDL_Rect buttonRect = { 100, 100, 200, 50 };
    SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
    SDL_RenderFillRect(renderer, &buttonRect);

    // 렌더링 업데이트
    SDL_RenderCopy(renderer, textTexture, NULL, &buttonRect);
    SDL_RenderPresent(renderer);

    // 이벤트 루프
    bool quit = false;
    SDL_Event e;
    while (!quit) {
        while (SDL_PollEvent(&e) != 0) {
            if (e.type == SDL_QUIT) {
                quit = true;
            }
        }
    }

    // 메모리 해제
    SDL_DestroyTexture(textTexture);
    SDL_FreeSurface(textSurface);
    SDL_DestroyTexture(buttonTexture);
    TTF_CloseFont(font);
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();
    TTF_Quit();

    return 0;
}

마치며

위의 코드는 SDL과 TTF(Truetype Font)를 사용하여 간단한 GUI를 만드는 방법을 보여준다. 이를 바탕으로 다양한 GUI 요소들을 추가하고 상호작용을 구현하여 원하는 UI를 만들 수 있다.

SDL 및 TTF 개발자 문서를 참조하여 더 많은 기능 및 옵션을 확인할 수 있다.

참고 문헌: