SDL2 简明教程:创建一个空的窗口

Posted 芥末的无奈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDL2 简明教程:创建一个空的窗口相关的知识,希望对你有一定的参考价值。

系列文章目录

SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境

SDL2 简明教程(二):创建一个空的窗口


文章目录


创建空窗口

在上一篇文章中,我们了解了通过 CMake + Conan 引入 SDL2 库进行编程。今天我们继续 SDL2 教学,学习如何创建一个空的窗口。

创建空窗口非常简单,只需仅仅几行代码:

#if defined(__cplusplus)
extern "C" 
#endif
#include <SDL.h>
#if defined(__cplusplus)
;
#endif

int main(int argc, char ** argv)

    SDL_Init(SDL_INIT_VIDEO);
 
    SDL_Window * screen = SDL_CreateWindow("My SDL Empty Window",
        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
 
    SDL_Quit();
 
    return 0;

上述代码中:

  • SDL_Init 初始化 SDL,它告诉 SDL 哪些子系统是我们需要的,这个例子中 SDL_INIT_VIDEO 表示视频是我们需要的
  • 在代码末尾调用 SDL_Quit 退出 SDL,清理相关内存和资源
  • SDL_CreateWindow 用于创建一个窗口,我们将窗口的标题,初始化位置,窗口的宽和高以及 flags 告诉 SDL,它负责生成一个窗口

如果运行上述代码,它可以正常工作,但窗口停留的时间非常短暂,休~ 一下就不见了。我们可以添加一些代码,保持窗口直到它被主动关闭:


#if defined(__cplusplus)
extern "C" 
#endif
#include <SDL.h>
#if defined(__cplusplus)
;
#endif

int main(int argc, char *argv[]) 
    bool quit = false;
    SDL_Event event;

    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window *screen = SDL_CreateWindow("My SDL Empty window",
                                          SDL_WINDOWPOS_UNDEFINED,
                                          SDL_WINDOWPOS_UNDEFINED,
                                          640, 480, 0);
    for (; !quit;) 
        SDL_WaitEvent(&event);

        switch (event.type) 
        case SDL_QUIT: 
            quit = true;
            break;
        
        
    

    SDL_Quit();
    return 0;

for(;!quit;) 表明代码在无限循环直到满足退出条件。

我们使用 SDL_WaitEvent() 来等待一个事件发生(例如按下键盘),同时将一个 SDL_Event 结构体送入其中。你还可以使用 SDL_PollEvent() 来连续不间断地获取事件,但它会消耗大量的 CPU 周期。(SDL_WaitEvent() 基本上都在睡眠,知道发生了一个事件,总体上它更轻量)。

事件告诉你发生了啥,它可能是按键、滚轮滑动、鼠标移动、触摸交互等等。在我们的示例中,我们只对 SDL_QUIT 事件感兴趣,这意味着用户点击了窗体的关闭按钮。

OK,现在去运行代码,你可以得到一个空窗体,它会一直存在直到你关闭它:

哈哈哈,非常简单吧。你可以以此为起点,开始在你的窗口画东西。玩得开心,再回来看更多的教程吧!

总结

本文介绍了如何使用 SDL2 创建一个空的窗口,你可以指定窗口的位置,大小等信息。为了让窗口保持存在,我们引入一个无限循环直到满足退出条件,关闭窗口触发 SDL_QUIT 事件,通过 SDL_WaitEvent 等待该事件,随后关闭窗口。

本文源码你可以在 sdl2_tutorial 找到。

以上是关于SDL2 简明教程:创建一个空的窗口的主要内容,如果未能解决你的问题,请参考以下文章

SDL2 简明教程:显示图片

SDL2 简明教程:显示图片

SDL2 简明教程:OpenGL 绘制

SDL2 简明教程:用 SDL_IMAGE 库导入图片

SDL2 简明教程:用 SDL_IMAGE 库导入图片

SDL2:如何同时拥有 SDL2 菜单和 OpenGL 上下文?