使用SDL基本步骤

2020-03-01  本文已影响0人  程序员都是傻子呀

添加头文件 #include <SDL.h>

初始化SDL

退出SDL

#include <SDL2/SDL.h>

int main(int argc, char* argv[]) {
    SDL_Window *window = NULL;
    SDL_Renderer *render = NULL;

    SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
    SDL_Log("Hello World!");

    window = SDL_CreateWindow("hello world",
                    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                    640, 480,
                    SDL_WINDOW_RESIZABLE);
    if (!window) {
        SDL_Log("Failed to Create Window!");
        goto __EXIT;
    }   

    render = SDL_CreateRenderer(window, -1, 0); 
    if (!render) {
        SDL_Log("Failed to Create Render!");
        goto __DWINDOW;
    }   

    SDL_SetRenderDrawColor(render, 255, 255, 255, 255);
    SDL_RenderClear(render);

    // draw
    SDL_SetRenderDrawColor(render, 0, 255, 0, 255);
    SDL_Rect bigrect = { 0,0,100, 100 };
    SDL_RenderFillRect(render, &bigrect);

    SDL_RenderPresent(render);

    SDL_Event windowEvent;
    while(1) {
        if (SDL_PollEvent(&windowEvent)) { // 对当前待处理事件进行轮询。
            if (SDL_QUIT == windowEvent.type) { // 如果事件为推出SDL,结束循环。
                printf("SDL quit!\n");
                break;
            }   
        }   
    }   
    // 第二种方式
    int quit = 1;
    do {
        SDL_WaitEvent(&event);
        switch(event.type) {
        case SDL_QUIT:
            quit = 0;
            break;
        default:
            SDL_Log("event type is %d", event.type);
         }
    }while(quit);

__DWINDOW:
    SDL_DestroyWindow(window);

__EXIT:
    SDL_Quit();
    printf("end...\n");
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读