SDL

更新时间:2023-08-16 12:40

SDL(Simple DirectMedia Layer)是一套开放源代码跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。现SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

简介

SDL(Simple DirectMedia Layer)被广泛的用于许多著名的游戏。最著名的游戏是赢得Linux组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序员(Lead Programmer)。

功能介绍

·SDL支持的功能

·视频

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

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

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

Surface的blit能自动的转化为目标格式。blit是优化过的,并能使用硬件加速x86平台上有针对MMX优化过的blit。

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

·事件

提供以下事件:

应用程序的visibility发生改变

键盘输入

鼠标输入

用户要求的退出

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

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

线程安全的事件队列。

·音频

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

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

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

·CD音频

完整的CD音频控制API

·线程

简单的线程创建API

用于同步的简单的二进制信号量(semaphores)

·定时器

读取已流逝的毫秒数。

等待指定的毫秒数。

设置一个10毫秒精度的周期性定时器。

·字节序无关

侦测当前系统的字节序

快速转换数据的函数

读写指定字节序的数据

其它

SDL内置了调用OpenGL的函数。

通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net外部扩展库,可以轻松实现JPGPNGTIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关的使用等。

SDL也有其他语言的包装,可以在这里查看 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。

包装得比较好的是python语言的pygame。不过仍然建议你熟悉c/c++环境下的SDL后再使用,会得心应手许多。

最后,我们来了解一下SDL的版权问题,SDL在GNU LGPL 2(一个国际上的开源组织)下发布,这个版本允许你将SDL以动态链接库(dynamic link library)的形式免费地用于商业游戏软件的开发。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}