SDL 创建窗口

2017-07-29  本文已影响88人  大批

创建一个窗口的过程 _ 自带梯子哦~

侵删

首先来了解一下SDL窗口创建的流程


SDL初始化

SDL_Init(SDL_INIT_VIDEO)

SDL创建窗口

window = SDL_CreateWindow("SDL Demo",
        SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,
        SCREEN_WIDTH,SCREEN_HEIGHT,//窗口的宽度和高度
        SDL_WINDOW_SHOWN
    );

获取到窗口的surface,并且操作surface

操作完surface之后更新窗口的操作是

SDL_UpdateWindowSurface(window);

Demo源码

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

//SDL demo main
int main(int argc, char* argv[]) {
    SDL_Window *window = NULL;
    SDL_Surface *surface = NULL;

    if (SDL_Init(SDL_INIT_VIDEO) < 0) {
        printf("SDL无法初始化 %s",SDL_GetError());
        return -1;
    }

    window = SDL_CreateWindow("SDL Demo",
        SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,//这两个是窗口的位置 x y(不在乎)
        SCREEN_WIDTH,SCREEN_HEIGHT,//窗口的宽度和高度
        SDL_WINDOW_SHOWN //确保在创建窗口时显示该窗口
    );

    if (window == NULL) {
        printf("创建window失败");
        return -1;
    }

    //接下来是获取窗口的屏幕 这样才能绘制
    surface = SDL_GetWindowSurface(window);

    if (surface == NULL) {
        printf("获取屏幕失败");
        return -1;
    }

    //填充为红色
    SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 0xff, 0x00, 0x00));

    //更新窗口操作
    SDL_UpdateWindowSurface(window);

    //等待2秒
    SDL_Delay(2 * 1000);

    //销毁资源退出
    SDL_DestroyWindow(window);

    return 0;
}

Nothing is certain in this life. The only thing i know for sure is that. I love you and my life. That is the only thing i know. have a good day

上一篇 下一篇

猜你喜欢

热点阅读