美文网首页
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