ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual C++에서 SDL2 라이브러리 사용하기
    프로그래밍/윈도우즈 2021. 3. 28. 12:07
    728x90

    SDL 사이트(링크)에서 SDL2 헤더와 라이브러리를 다운로드 합니다. Visual C++을 사용할 것이기 때문에 VC용으로 다운로드 합니다.

     

    Visual C++을 실행하여 프로젝트를 생성합니다(Visual Studio 2019를 사용하였습니다).

     

    Windows Desktop Wizard 용 프로젝트를 생성합니다(Blank Solution이나 Consol App를 선택하셔도 되지만 설명은 Windows Desktop Wizard 용 프로젝트로 하겠습니다).

     

    프로젝트 이름을 설정합니다.

     

    Console Application을 선택하고 프로젝트를 생성을 마무리 합니다.

     

    다운로드 받은 SDL2 헤더와 라이브러리를 이 프로젝트에서 사용할 수 있도록 설정합니다. 먼저 저는 다음과 같이 프로젝트 폴더 안에 위치 시켰습니다.

     

    그리고, 프로젝트 환경설정에서 다음과 같이 설정해줍니다.

    • C/C++ > General > Additional Include Directories: $(SolutionDir)\3rdparty\SDL2-2.0.14\include
    • Linker > General > Additional Library Directories: $(SolutionDir)\3rdparty\SDL2-2.0.14\lib\x64
    • Linker > Input > Additional Dependencies: SDL2.lib;SDL2main.lib 추가 (라이브러리는 전처리문으로도 추가 할 수 도 있기에 생략 하셔도 됩니다.)

     

    코드를 수정합니다. main 함수가 있는 소스 코드 파일을 열고 다음과 같이 코딩합니다(main 함수 대신 SDL_main 함수를 사용합니다).

    640x480 크기의 윈도우 창을 하나 만들고 배경을 흰색으로 칠한 다음 위에 빨간색 네모 박스를 그려넣는 간단한 코드 입니다.

    #include <stdio.h>
    #include "SDL.h"
    
    #pragma comment(lib, "SDL2main.lib")
    #pragma comment(lib, "SDL2.lib")
    
    SDL_Window* window;
    SDL_Renderer* renderer;
    
    int SDL_main(int argc, char* argv[])
    {
    	printf("Start\n");
    
    	// Initialize SDL
    	if (SDL_Init(SDL_INIT_VIDEO) < 0) {
    		printf("Could not initialize SDL! (%s)\n", SDL_GetError());
    		return -1;
    	}
    
    	// Create window
    	window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_OPENGL);
    	if (window == NULL) {
    		printf("Could not create window! (%s)\n", SDL_GetError());
    		return -1;
    	}
    
    	// Create renderer
    	renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC|SDL_RENDERER_TARGETTEXTURE);
    	if (renderer == NULL) {
    		printf("Could not create renderer! (%s)\n", SDL_GetError());
    		return -1;
    	}
    
    	// Clear renderer (white)
    	SDL_SetRenderDrawColor(renderer, 255, 255, 255, SDL_ALPHA_OPAQUE);
    	SDL_RenderClear(renderer);
    
    	// Draw rect (red)
    	SDL_Rect r = {50, 50, 100, 100};
    	SDL_SetRenderDrawColor(renderer, 255, 0, 0, SDL_ALPHA_OPAQUE);
    	SDL_RenderDrawRect(renderer, &r);
    
    	// Update screen
    	SDL_RenderPresent(renderer);
    
    	SDL_Event event;
    	int done = 0;
    
    	while (!done) {
    		SDL_PollEvent(&event);
    
    		if (event.type == SDL_QUIT) {
    			done = 1;
    		}
    	}
    
    	SDL_DestroyRenderer(renderer);
    	SDL_DestroyWindow(window);
    	SDL_Quit();
    
    	printf("End\n");
    
    	return 0;
    }

     

    그리고 컴파일 후 실행하시면 다음과 같이 실행될 것입니다.

    (실행할 때 SDL2.dll이 필요한데, 다운로드 받은 라이브러리의 lib 폴더의 x86과 x64 폴더 안에 dll 파일이 있습니다.)

     

    앞에서 프로젝트를 Console Application으로 만들었기 때문에 콘솔 창과 함께 실행됩니다. 디버깅 시에는 디버깅 메시지를 볼 수 있어 편하지만 배포를 할 때는 없애야 겠지요.

    프로젝트 환경설정에서 다음과 같이 설정합니다.

    • Linker > System > SubSystem: Windows (/SUBSYSTEM:WINDOWS)

     

    다음에는 MFC와 SDL을 함께 사용하는 방법을 알아보겠습니다.

    728x90

    댓글

Designed by Tistory.