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

article/2025/10/11 23:35:33

SDL教程(一)

 作者:akinggw

     在阔别半年后,我又回来了。这次回来,首先要向大家问声好,然后继续我们的游戏开发之旅。在以前的日子里,我主要在翻译一些游戏开发方面的文章,而现在,我决定自己写。从今天开始,我要向大家介绍一个非常出名的游戏开发库——SDL。

 SDL(Simple DirectMedia Layer)是什么呢?根据他的表面意思,翻译过来就是简单的指导媒体层。它的官方网站请访问  http://www.libsdl.org .

SDL 标志

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序员(Lead Programmer)。Loki Entertainment是一家致力于向Linux移植顶尖游戏的公司。更多信息请访问 http://www.lokigames.com/

SDL是一个跨平台的多媒体函数库,被用来设计成在低层访问音频,键盘,鼠标,游戏杆,基于OPENGL(一个3D图象开发函数库)的3D 硬件,和2D图象帧缓冲区。它被广泛的用于基于MPEG的媒体播放软件,模拟器,和许多著名的游戏。最著名的游戏是赢得LIUNX组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。

文明:权利的召唤(Civilization: Call To Power)

 SDL是一个跨平台的函数库,几乎支持现今所有平台:Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX。

SDL用C语言写成,但是可以很容易在C++下面工作,并且SDL绑定了许多其它的语言,这其中就包括Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, and Smalltalk。

最后,我们来了解一下SDL的版权问题,SDL在GNU LGPL 2(一个国际上的开源组织)下发布,这个版本允许你将SDL免费地用于商业软件的开发。

 下面,我们来详细地了解SDL的功能,这样有利于我们今后的讲解。

SDL有哪些功能?

视频

· 设置8bpp或更高的任意色彩深度的视频模式。如果某个模式硬件不支持,可以选择转化为另一模式。

· 直接写入线性的图像帧缓冲(framebuffer)。

· 用颜色键值(colorkey)或者alpha混合属性创建surface。

· Surface的blit能自动的转化为目标格式。

blit是优化过的,并能使用硬件加速。x86平台上有针对MMX优化过的blit。

· 硬件加速的blit和fill(填充)操作,如果硬件支持的话。

事件

· 提供以下事件: o 应用程序的visibility发生改变 o 键盘输入 o 鼠标输入 o 用户要求的退出

· 每种事件都能通过SDL_EventState()关闭或者打开。

· 事件经由用户指定的过滤函数再被加入到内部的事件队列。

· 线程安全的事件队列。

 音频

· 设置8位和16位的音频,单声道或者立体声,如果格式硬件不支持,可以选择转换。

· 由独立的线程执行音频部分,并提供用户回调(callback)机制。

· 设计上考虑到了客户定制的软混音器,但实际上在例程中就包含了一个完整的音频/音乐输出库。 CD音频 · 完整的CD音频控制API 线程

· 简单的线程创建API

· 用于同步的简单的二进制信号量(semaphores 定时器

· 读取已流逝的毫秒数。

· 等待指定的毫秒数。

· 设置一个10毫秒精度的周期性定时器。 字节序无关

· 侦测当前系统的字节序

· 快速转换数据的函数

· 读写指定字节序的数据

以上就是SDL大致的功能介绍,上面的介绍来源于SDL中文介绍文档。但许多后续的开发者在不断的完善SDL。所以,现在SDL不光能实现上面的基本功能,

还有下面所列的功能:

A. 支持MPG,PNG,GIF等压缩图象文件格式的显示;

 B. 支持TrueType 字体的显示;

 C. 通过SDL_NET,可以实现网络的联接;

我会在今后的日子里详细地介绍SDL的内容,我计划先介绍SDL的基本功能,也就是上面所列的功能以及实现方法,并给出完整的代码。 然后我会介绍SDL_NET的功能和使用方法,并在今后写出一个个完整的实例。

 希望大家多多捧场,多多支持!

 关于更多内容请访问金桥科普网站( http://popul.jqcq.com  )游戏开发栏目,如果你需要游戏开发方面的书籍请参考金桥书城游戏频道(http://book.jqcq.com/category/1_70_740.html )。 如果你在阅读本篇文章时有什么好的建议请来信给我,我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题,请到金桥科普网站(http://popul.jqcq.com  )游戏开发栏目,我将详细地为你解答。

 在下一篇文章中,我们将进入SDL的开发之旅,我将讲解如何在VC++6.0中配置SDL,并写出我们的第一个程序,

 

 好期待啊!!!!!!!!!!

 


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

相关文章

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…

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

这个题其实是转自Bugku的Login4 (CBC字节翻转攻击) 题目有提示密码就是web1 的flag 然后登入 这里有回显,然后我们换一下 下面cookie里的iv和cipher看着就像CBC加密的方式 利用的就是CBC解密的特点:前16个密文字符用来解密接下来的一组16个密文&#…

ISCC 2021 SSTI

文章目录 FUZZ测试:了解一下SSTI常用的语句格式:说一下构造思路:构造题外话:(反转结果字符串) 再ISCC中遇到了一道SSTI的题目,拿来练练手,题目难度的化,相对于普遍的过滤…

[ISCC 2021]部分wp

文章目录 海市蜃楼-1Retrieve the passcode我的折扣是多少小明的表情包Hack the Victim美人计李华的红包小明的宠物兔ISCC客服冲冲冲(一)这是啥Web01登录tornadowhich is the true isccISCC客服一号冲冲冲(二)Explore Rubylovely …