跳转到内容

SDL(简单直接媒体层) - 前言

25% developed
来自维基教科书,开放的书籍,开放的世界

关于本书

[编辑 | 编辑源代码]

本书旨在面向对 C/C++ 有一定理解的读者。要学习 C/C++,请阅读相应的维基教科书:C 编程C++ 编程。本书中的示例代码将使用 C 语言编写,并符合 SDL 2.0 及更高版本。

主要作者

[编辑 | 编辑源代码]



什么是 SDL?

[编辑 | 编辑源代码]

简单直接媒体层 (SDL) 是一个跨平台的多媒体库,旨在通过OpenGL提供对音频、键盘、鼠标、操纵杆、3D 硬件以及 2D 视频帧缓冲区的低级访问。它被 MPEG 播放软件、模拟器以及许多流行的游戏使用,包括广受赞誉的 Linux 版本的“文明:征服世界”。SDL 的名称中包含“层”,因为它实际上是一个包装库,包含特定于操作系统的函数。SDL 的主要目的是为访问这些函数提供一个通用框架。为了实现超越此目标的功能,许多库被创建来在 SDL 之上工作。

跨平台编程是在编译时通过检查程序正在编译的哪个操作系统来实现的。这可以通过使用条件预处理器指令来完成。以下是一个如何在 SDL 程序中实现特定于平台的代码块的代码示例

#ifdef _WIN32
/*Windows code here*/
#endif

#ifdef _APPLE_
/*macOS code here*/
#endif

#ifdef _linux_
/*Linux code here*/
#endif

这些指令检查 OS 编译器库中存储的预定义变量是否存在。根据定义的变量,相应的代码将在该特定系统上执行。这种方法还防止 OS 特定的代码相互冲突。

这样分隔的原因是不同的操作系统有不同的图形显示方式。尽管每种 OS 中的代码不同,但大多数都执行类似的任务,例如创建窗口、渲染到窗口、获取用户输入等。SDL 将这些任务统一到一个统一的界面中,以便您可以在多个平台上编写、编译和运行程序。

SDL 支持 Linux、Windows、Windows CE、BeOS、MacOS、Mac OS X、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、IRIX 和 QNX。代码包含对 AmigaOS、Dreamcast、Atari、AIX、OSF/Tru64、RISC OS、SymbianOS 和 OS/2 的支持,但这些不受官方支持。

SDL 用 C 语言编写,但可以与 C++ 原生地一起使用。SDL 还绑定到其他几种语言,包括 Ada、C#、D、Eiffel、Erlang、Euphoria、Go、Guile、Haskell、Java、Lisp、Lua、ML、Oberon/Component Pascal、Objective C、Pascal、Perl、PHP、Pike、Pliant、Python、Ruby、Rust、Smalltalk 和 Tcl。

软件开发人员使用 SDL 来编写可在许多操作系统上运行的电脑游戏和其他多媒体应用程序:Android、iOS、Linux、Mac OS X、Windows 和其他平台。它管理视频、事件、数字音频、CD-ROM、线程、共享对象加载、网络和计时器。

简单直接媒体层 2.0 (SDL2) 是该库的第二代版本。新版本附带了许多新功能,例如完整的 3D 硬件加速和限制较少的 zlib 许可证。


Clipboard

待办事项
列出 SDL2 中的主要更改,包括示例。


[编辑 | 编辑源代码]

华夏公益教科书