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

这篇具有很好参考价值的文章主要介绍了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 简明教程(二):创建一个空的窗口
哈哈哈,非常简单吧。你可以以此为起点,开始在你的窗口画东西。玩得开心,再回来看更多的教程吧!

总结

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

本文源码你可以在 sdl2_tutorial 找到。文章来源地址https://www.toymoban.com/news/detail-404495.html

到了这里,关于SDL2 简明教程(二):创建一个空的窗口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mpack简明教程

    本文先简单介绍MessagePack的基本概念。 然后,介绍一个MessagePack C API - MPack的通常使用。 接着尝试对MPack截断数据的读取。 注:本文完整代码见仓库。 如果你使用过C/C++的json库,那么上手MessagePack是比较容易的。关于C/C++ Json库的使用可见:C++ JSON库的一般使用方法-CSDN博客。

    2024年02月20日
    浏览(46)
  • SAP报表简明教程

    SAP 报表简明教程   一、 报表需求,根据物料编码和物料类型 查询报表。用户输入界面要求如下:     二、 开始写代码。先进入 TCODE:SE38 ,新建一个程序。      点击创建按钮,如下图:      输入标题,写明 此程序的功能 作者,创建时间,点保存,     输入自己事先建

    2024年02月04日
    浏览(45)
  • 【Verilator】 1 简明教程

    我是 雪天鱼 ,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计。 欢迎来关注我的B站账号,我将定期更新IC设计教程。 B站账号: 雪天鱼 ,https://space.bilibili.com/397002941?spm_id_from=333.1007.0.0 先从GitHub下载实验代码 以一个用SystemVerilog编写的简单ALU来作为DUT(device under test)

    2024年02月02日
    浏览(64)
  • Husky使用简明教程

    Husky 是一个流行的 Git 钩子工具,用于在不同的 Git 操作(如提交和推送)前自动运行脚本。比如代码格式化、静态检查等。这有助于保持代码库的质量和一致性。本教程将详细介绍 Husky 的原理、使用方式、配置方法以及如何在开发中集成 Husky。 Husky 原理 安装 Husky 配置 Hus

    2024年04月10日
    浏览(43)
  • SSH 隧道简明教程

    本章主要介绍了什么是 SSH 隧道以及如何使用 SSH 隧道,包括 SSH 隧道加密数据传输以及绕过防火墙。 SSH 隧道是 SSH 中的一种机制,它能够将其他 TCP 端口的网络数据通过 SSH 连接来转发,并且自动提供了相应的加密及解密服务。因为 SSH 为其他 TCP 链接提供了一个安全的通道来

    2024年02月06日
    浏览(50)
  • dig 简明教程

    哈喽大家好,我是咸鱼 不知道大家在日常学习或者工作当中用 dig 命令多不多 dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。 无论是简单的 DNS 解析查找还是更高级的故障排除和分析, dig 都能够

    2024年02月08日
    浏览(67)
  • Blender骨骼动画简明教程

    Blender 是首选的开源3D动画软件之一。 令人惊讶的是,开始创建简单的角色动画并不需要太多时间。 一旦获得最终的 3D 角色模型,你就可以使用该软件的众多动画功能和工具将其变为现实。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 例如,Blender 的绑定工具将帮助你实现角色

    2024年02月07日
    浏览(51)
  • 电商3D产品渲染简明教程

    3D 渲染让动作电影看起来更酷,让建筑设计变得栩栩如生,现在还可以帮助营销人员推广他们的产品。 从最新的《阿凡达》电影到 Spotify 的上一次营销活动,3D 的应用让一切变得更加美好。 在营销领域,3D 产品渲染可帮助品牌创建产品的高分辨率图像和视频,这些图像和视

    2024年02月13日
    浏览(35)
  • AI绘画工具简明教程

    官方地址 首先需要邮箱注册,等待邀请(可能需要等待一两天) 能成功登录后会进入这样一个界面 https://app.scenario.com/generators 创建模型 提供的图片集上传的时候得是jpg,还需要裁剪成正方形。批量修改图片在线网站:https://www.birme.net/ 根据图集生成图片 官方网址:https://

    2024年02月11日
    浏览(67)
  • WebGPU开发简明教程【2023】

    WebGPU 是一种全新的现代 API,用于在 Web 应用程序中访问 GPU 的功能。 在 WebGPU 之前,有 WebGL,它提供了 WebGPU 功能的子集。 它启用了新一类丰富的网络内容,开发人员用它构建了令人惊叹的东西。 然而,它基于 2007 年发布的 OpenGL ES 2.0 API,而该 API 又基于更旧的 OpenGL API。

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包