跳转到内容

SDL(Simple DirectMedia Layer) - 什么是 SDL?

来自 Wikibooks,开放世界中的开放书籍

Simple DirectMedia Layer (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

这些指令检查操作系统编译器库中存储的预定义变量的存在。根据定义了哪些变量,将为特定系统执行相应的代码。此方法还可以防止操作系统特定的代码相互冲突。

这样分离的原因是操作系统有不同的图形显示方式。即使代码在每个操作系统中都不同,但大多数操作都执行类似的任务,例如创建窗口、渲染到窗口、获取用户输入等。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、线程、共享对象加载、网络和计时器。

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


Clipboard

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


[编辑 | 编辑源代码]

华夏公益教科书