美文网首页
SDL 创建窗口

SDL 创建窗口

作者: 大批 | 来源:发表于2017-07-29 10:35 被阅读88次

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

    侵删

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

    • SDL初始化
    • 创建一个窗口
    • 获取到这个窗口的surface(这个surface就是我们绘图的时候会用到的对象)
    • 操作这个surface
    • 更新窗口

    SDL初始化

    • 初始化调用的是SDL_Init函数
    • SDL有好几个子系统,主要是VIDEO , AUDIO , TIME , EVENTS ...要初始化不同的系统就传不同的参数
    SDL_Init(SDL_INIT_VIDEO)
    

    SDL创建窗口

    • 创建窗口使用的函数是SDL_CreateWindow
    • 第一个参数是标题
    • 第二个和第三个是窗口创建出来的位置x,y。SDL_WINDOWPOS_UNDEFINED这个表示我们不关心窗口的位置
    • 第四个和第五个参数是窗口的宽度和高度
    • 最后一个参数是窗口创建的时候就显示出来
    window = SDL_CreateWindow("SDL Demo",
            SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,
            SCREEN_WIDTH,SCREEN_HEIGHT,//窗口的宽度和高度
            SDL_WINDOW_SHOWN
        );
    

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

    • 获取surface的函数是SDL_GetWindowSurface(window);

    操作完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

    相关文章

      网友评论

          本文标题:SDL 创建窗口

          本文链接:https://www.haomeiwen.com/subject/wpvqlxtx.html