SDL2 简明教程(二):创建一个空的窗口
系列文章目录
SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境
SDL2 简明教程(二):创建一个空的窗口
文章目录
- 系列文章目录
- 创建空窗口
- 总结
创建空窗口
在上一篇文章中,我们了解了通过 CMake + Conan 引入 SDL2 库进行编程。今天我们继续 SDL2 教学,学习如何创建一个空的窗口。
创建空窗口非常简单,只需仅仅几行代码:
#if defined(__cplusplus)
extern "C" {#endif
#include <SDL.h>
#if defined(__cplusplus)
};
#endifint 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)
};
#endifint 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 简明教程(二):创建一个空的窗口相关推荐
- python创建一个空列表alist_【Python 1-7】Python手把手教程之——详解列表List
列表 作者 | 弗拉德 来源 | 弗拉德(公众号:fulade_me) 列表,在其他语言中又被称为数组,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表中所有字母.数字0~9或所有家庭成员姓名 ...
- Scott Mitchell 的ASP.NET 2.0数据教程之一: 创建一个数据访问层
原文 | 下载本教程中的编码例子 | 下载本教程的英文PDF版 导言 作为web开发人员,我们的生活围绕着数据操作.我们建立数据库来存储数据,写编码来访问和修改数据,设计网页来采集和汇总数据.本文是研 ...
- 【Android Developers Training】 93. 创建一个空验证器
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库
[homebrew 系列文章] HomeBrew常规使用教程 Homebrew进阶使用教程(一) Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库 Homebrew进阶使用教程 ...
- python创建一个空集合_python空集合如何表示
python中,用set来表示一个无序不重复元素的序列.set的主要作用就是用来给数据去重. 可以使用大括号 { } 或者 set() 函数创建集合,但是注意如果创建一个空集合必须用 set() 而不 ...
- python定义一个空数组_在NumPy中如何创建一个空的数组/矩阵?
如何以我通常使用列表(List)的方式使用Numpy数组或矩阵? 我想创建一个空的数组(或矩阵),然后每次添加一列(或行)到这个数组(或矩阵). 目前能想到的方法是: mat = None for c ...
- python 空dataframe_python 创建一个空dataframe 然后添加行数据的实例
实例如下所示: import pandas as pd import re import math dframe1 = pd.read_excel("window regulator分析报告 ...
- 扩展springmvc组件——当页面跳转时,需要在Controller里面创建一个空方法去跳转或者是创建一个配置类 ||日期格式化说明||自定义格式化器||消息转化器扩展fastjson
在容器中注册视图控制器 当页面跳转时,我们需要在Controller里面创建一个空方法去跳转,那么有没有别的配置方法呢 创建一个WebMvcConfig的配置类 实现WebMvcConfigure ...
- python dataframe创建_python 创建一个空dataframe 然后添加行数据的实例
实例如下所示: import pandas as pd import re import math dframe1 = pd.read_excel("window regulator分析报告 ...
最新文章
- c语言递归求五阶行列式源代码,久游堂怎么样 -官网
- mysql5.7.安装记录
- C++中的以任意字符分割字符串
- mysql中grade字段降序排列_mysql高级查询
- Linux命令:MySQL系列之十--MySQL用户和权限管理,mysql管理员密码重置
- python上机报告出现的问题和解决方法_关于发现存在问题及解决方法的报告
- 基于sklearn的朴素贝叶斯_朴素贝叶斯分类实战:对文档进行分类
- mysql show slave_Mysql复制 show slave status
- Protobuf序列化的原理-字符如何转化为编码
- 内核中的内存申请:kmalloc、vmalloc、kzalloc、get_free_pages 之间的区别
- 青蛙学Linux—Zabbix Agent的主动模式和被动模式
- Apache Maven 入门篇 ( 上 )
- dijkstra算法学习笔记
- lisp用entmake生产圆柱体_液态基酒生产
- TextCNN代码解读及实战
- [转]字号、pt、px、inch、cm 之间的关系及对照表
- 信度spss怎么做_Spss详细图文教程——问卷信度和效度检验步骤图解
- 艺歌点歌系统服务器连接不了,艺歌手机点歌系统歌曲是什么格式
- [02/Dec/2019:12:59:10 +0800]之日期转换
- 【python】基础七:编码问题
热门文章
- CUDA(33)之ETH Mining(Parallel-mining project based on Opencl/GPU )
- ICASSP2021丨多说话人多风格音色克隆大赛(M2VoC)
- 计算机算法的概念教案,算法概念的教学
- python编译程序输入上网时间并计算上网费用 计算方法_编一应用程序根据上网时间计算上网费用,计算方法如下: 25元基数 ≤10小时 每小时2元 10且≤50小时 每小...
- spring boot流浪动物救助系统 毕业设计-附源码180920
- 一级目录的解释(存储什么东西,英文)
- html基础标签独坐敬亭山练习,八年级下册《独坐敬亭山》课前预习
- 对研究生教育有什么看法_我对研究员特征的看法
- 违约概率和违约损失率
- 如何获取网页上的图片