系列文章目录
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
等待该事件,随后关闭窗口。文章来源:https://www.toymoban.com/news/detail-404495.html
本文源码你可以在 sdl2_tutorial 找到。文章来源地址https://www.toymoban.com/news/detail-404495.html
到了这里,关于SDL2 简明教程(二):创建一个空的窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!