Start Game:SDL2简介

article/2025/10/11 8:02:18

Start Game:SDL2简介


官网简介:


Simple DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级别访问。它被视频播放软件、模拟器和流行游戏使用,包括Valve的获奖目录和许多Humble Bundle游戏。

SDL正式支持Windows、macOS、Linux、iOS和Android。对其他平台的支持可以在源代码中找到。

SDL是用C编写的,本机与C++配合使用,还有可用于其他几种语言的绑定,包括C#和Python。

SDL 2.0是在zlib许可证下分发的。此许可证允许您在任何软件中自由使用SDL。

API类型分类


SDL 按照 API 的类型可以分为几个部分:

  • Basics ,用于系统初始化、错误处理、日志打印等基本功能。

  • Video,用于窗口管理和显示、像素纹理渲染等功能。

  • Input Events,用于处理各种事件,包括键盘、鼠标、手柄等外设。

  • Force Feedback,主要用于各种“力反馈”的设备支持。

  • Audio,用于音频设备管理,包括播放、录制等操作。

  • Threads,用于多线程、原子操作以及线程管理等功能。

  • Timers,用于定时器的支持。

  • File Abstraction,文件系统相关操作。

  • Shared Object Support,用于动态库的加载以及函数查找等相关操作。

  • Platform and CPU Information,主要用于平台检测、CPU检测、字节序、位运算等功能。

  • Power Management,电源状态管理。

  • Additional Functionaliy,平台相关的附加功能。

除了上述子系统外,SDL 还基于这些功能开发了几个扩展库:

  • SDL_image 用于支持额外的图片格式,包括常见的 PNG、BMP、WEBP、GIF、JPEG、TIFF 等。

  • SDL_mixer 用于支持额外的音频格式,包括 MP3、OGG、WAV 等。

  • SDL_ttf 用于 TrueType 字体的渲染。

  • SDL_rtf 用于简单的 RTF 渲染支持。

  • SDL_net 用于网络相关的支持。

游戏开发基本模块


虽然上面的模块看起来很多,但是真正的需要学的的知识并不多,个人觉得制作简单的2D游戏大致需要掌握下面几个部分:

  • 窗口部分。制作一个游戏最基本的就是显示一个窗口,所有的有些画面都是在窗口之内。在历史的文章中已经介绍过直接使用 Win32 API 搭建窗口的方法,但是对于 SDL 来说,它已经对这些步骤进行的二次封装,如果创建窗口可以直接使用 SDL 窗口管理的相关 API 即可。

  • 事件部分。事件处理对于游戏来说非常重要,因为游戏中涉及大量的鼠标、键盘、手柄的外设交互,这些外设都可以看作一种事件产生装置,每种操作都会产生与之对应的事件,你可以在游戏中捕获这些事件,从而执行你游戏中对应的逻辑。

  • 显示部分。游戏画面对于游戏的重要性无需多言,而显示部分主要的功能就是用来渲染游戏画面的,在不同的平台,可以使用不同的显示接口,SDL 已经将这些差异性进行了封装,在使用 SDL 过程中,你无需关注不同平台的差异性,不过在这份教程中并不会过于关注跨平台的问题,重点还是围绕 Windows 平台,关注 SDL 游戏开发的基本过程。

  • 声音部分。声音对于游戏也非常重要。教程中主要会使用 SDL_mixer 扩展库实现对声音的播放,当然你也可以使用 音频播放教程 中的方式进行声音播放,只不过那些 API 只能在 Windows 平台使用而已。

除了上面的部分,其实还有网络模块、碰撞模块、动画模块等功能,但是这些并不是必须的,你不使用它们仍然可以制作一些游戏。当我们真正使用它们的时候再去了解显然比你一下子学习很多暂时用不上的知识要好的多。


http://chatgpt.dhexx.cn/article/pw9vvmYA.shtml

相关文章

SDL2的学习之路<三>显示文字

前言 上节介绍了怎么利用SDL接口去显示图片,这节主要介绍怎么去显示文本信息。 SDL2展示文字需要在官网下载SDL2_ttf的扩展库。这个第一节已经讲过了。 使用时需要先初始化库,使用结束时释放库资源。 TTF_Init(); //初始化库 … TTF_Quit(); //释放 显…

VS2019配置SDL2库

“SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、MacOS…

SDL系列教程(一):SDL简介

SDL教程(一) 作者:akinggw 在阔别半年后,我又回来了。这次回来,首先要向大家问声好,然后继续我们的游戏开发之旅。在以前的日子里,我主要在翻译一些游戏开发方面的文章,而现在&…

SDL2源代码分析1:初始化(SDL_Init())

SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL2源代码分析2:窗口(SDL_Window) SDL2源代码分析3:渲染器(SDL_Renderer) SDL2源代码…

SDL2入门教程(01_hello_SDL)

注: 本教程翻译自 lazyfoo的教程,原网址戳这里。翻译目的为鼓励自己坚持下去,可能语言不准确,仅供参考。 Hello SDL: 你的第一个图形窗口 这一篇教程包含最主要也最基础的一步——弹出一个窗口(Window) …

SDL2源代码分析2:窗口(SDL_Window)

SDL源代码分析系列文章列表: SDL2源代码分析1:初始化(SDL_Init()) SDL2源代码分析2:窗口(SDL_Window) SDL2源代码分析3:渲染器(SDL_Renderer) SDL2源代码…

SDL2使用简介

转自我的Gitee项目 SDL2使用简介 SDL2使用简介开发环境搭建WindowsVisual StudioCode::BlocksDev-Cpp CMake(CLion)问题总结 SDL2库使用介绍初始化创建窗口绘制矩形刷新屏幕读取输入直接扫描键盘读取系统事件 实例 绘制图片 SDL2使用简介 开发环境搭建 Windows Visual Stud…

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

系列文章目录 SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境 SDL2 简明教程(二):创建一个空的窗口 文章目录 系列文章目录创建空窗口总结 创建空窗口 在上一篇文章中,我们了解…

强大无比的嵌入式多媒体开发神器:SDL2

SDL 是什么? SDL(Simple DirectMedia Layer)是一套开源的跨平台多媒体开发库,使用 C 语言写成。 它提供了绘制图像、播放声音、获取键盘输入等相关的 API,大大降低多媒体应用开发难度的同时,也让开发者只要…

SDL2 简明教程(五):OpenGL 绘制

系列文章目录 SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境 SDL2 简明教程(二):创建一个空的窗口 SDL2 简明教程(三):显示图片 SDL2 简明教程&#xf…

SDL —— SDL2及API简介

SDL2框架 SDL( Simple DirectMedia Layer) 是一套开放源代码的跨平台多媒体开发库, 使用 C 语 言写成。 SDL 提供了数种控制图像、 声音、 输出入的函数, 让开发者只要用相同或是相似的 代码就可以开发出跨多个平台( L…

SDL2学习笔记(一):SDL2初步

一、Windows系统下的安装 MinGW ①安装MinGW并配置好环境变量; ②官网下载SDL for MinGW; ③将解压文件中的 .\i686-w64-mingw32\include\SDL2 复制到 .\MinGW\include ; //有的设备需要用x86_64-w64-mingw32中的文件,下同 ④将解…

ISCC2021—ISCC客服一号冲冲冲(二)

ISCC客服一号冲冲冲(二) 呦,又见面了,狗子 打开链接,发现登录接口似乎是个图片截了一块啊,把图片下载下来,lsp隐写发现源代码,同时php弱比较登录页面 (都看到这里啦&a…

ISCC2021——web部分

练武 ISCC客服冲冲冲(一) 该题目需要左边的客服票数高于右边的 我会的就两种方法,毕竟是废物嘛,允许 1、 把左右按钮换一下 然后就 2、在控制台输入 回车,走你 你涨啊,涨啊,接着涨啊…没吃…

ISCC,Misc:隐秘的信息

解码得到解压密码 解压出一张图,低位时头部显示有一串字符被 f f f f f 包裹,将可疑的字符单独拿出来 由于单个字符可能是由二进制错位导致的 fffffa4a9a1a1bd9 9b7a1a9ba34b127a 0b8abbc20b7a2b7a 2b524b43e9f8007f fffc7e3fe00fff00 71fffffffffffff…

ISCC理论题小解

B 域、工作组和家庭组表示在网络中组织计算机的不同方法。它们之间的主要区别是对网络中的计算机和其他资源的管理方式。 网络中运行 Windows 的计算机必须属于某个工作组或某个域。家庭网络中运行 Windows 的计算机也可以属于某个家庭组,但这不是必需的。 家庭网络…

ISCC web4

ISCC web4 打开网页看到: 代码审计。。。。。。。。。 一开始以为是sha256解密,结果半天搞不出来 后来才知道parse_url函数存在变量覆盖漏洞 因为要存在action参数,传入actionauth key也要传入key0 由于key是要被sha256加密的 传入一个has…

ISCC2022 擂台misc

文章目录 666扫!弱雪真扫黑暗森林PNGstego这是压缩包吗?小 数 学习了 P.S:抬杠就是你对 666 考查知识点:伪加密、猜谜的steghide弱口令爆破、流量分析、gif帧、键盘密码、AES 下载下来是一个压缩包,但是图片显示需要密码&#xf…

ISCC-2022 部分wp

目录 Web冬奥会解题步骤详细描述解题收获 Easy_sql解题步骤详细描述解题收获 Pop2022解题步骤详细描述解题收获 findme解题步骤详细描述 爱国敬业好青年-2解题步骤详细描述解题收获 这是一道代码审计题 Misc单板小将苏翊鸣解题步骤详细描述解题收获 2022冬奥会解题步骤详细描述…

ISCC——部分题wp

练武场 WEB: ISCC客服冲冲冲(一) 知识点: js解密 解题思路: 1.打开后出现投票的页面 2.查看源码 发现可疑的function.js 3.function.js,js加密 var _0xodqjsjiami.com.v6,_0x3e40[_0xodq,\x77\x35\x4c\x…