SDL2 简明教程:创建一个空的窗口
Posted 芥末的无奈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SDL2 简明教程:创建一个空的窗口相关的知识,希望对你有一定的参考价值。
系列文章目录
SDL2 简明教程(一):使用 Cmake 和 Conan 构建 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 简明教程:创建一个空的窗口的主要内容,如果未能解决你的问题,请参考以下文章