【SDL】SDL简介

原创 2016年08月29日 15:04:57

1. SDL简介

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)。
2. 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毫秒精度的周期性定时器。
字节序无关
侦测当前系统的字节序
快速转换数据的函数
读写指定字节序的数据

3. 跨平台性

·Linux
视频显示使用X11,利用XFree86 DGA扩展的优势,全屏显示使用新的w MTRR加速。
声音使用OSS API。
使用clone()系统调用和SysV IPC,或者glibc-2.1的pthreads实现线程。
·Win32
有两个版本,一个是适合所有基于Win32的系统的安全版本,另一个是基于DirectX的高性能版本。
安全版本的视频显示采用GDI。高性能版本采用DirectDraw,并支持硬件加速
安全版本的音频回放采用waveOut API。高性能版本采用DirectSound
·BeOS
视频显示采用BWindow。
音频回放采用BSoundPlayer API。
·非正式的移植版本,进展中Solaris, IRIX, FreeBSD MacOS

4. SDL扩展

SDL内置了调用OpenGL的函数。
通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用,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)的形式免费地用于商业游戏软件的开发。
参考文档:百度百科

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

SDL2学习笔记1-环境搭建以及Hello SDL

SDL(SimpleDirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出...
  • hjl240
  • hjl240
  • 2015年08月11日 13:40
  • 2086

SDL以及扩展库的交叉编译过程简介

下面我介绍一下SDL以及SDL的扩展库在arm11上的交叉编译 在这里我将SDL 交叉编译的相关都安装在/opt/arm目录下 相关简介: SDL官方网站 http://www.libsdl.org...

SDL以及扩展库的交叉编译过程简介

SDL以及扩展库的交叉编译过程简介

滑动窗口协议--SDL设计

  • 2017年11月09日 11:23
  • 908B
  • 下载

SDL入门教程(十三):1、多线程,从动画说起

作者:龙飞 1.1:简单动画         游戏离不开动画。我们考虑最简单的情况:将一个角色从一个位置移动到另外一个位置。这个行为表述给电脑就是,将一个surface不断的blit(),...

sdl封装半成品

  • 2015年11月29日 13:48
  • 43KB
  • 下载

SDL2视频渲染库

  • 2016年10月08日 17:11
  • 7.08MB
  • 下载

iOS SDL2静态库的编译

最近接触到关于ffmpeg的项目,包含SDL2(Simple DirectMedia Layer)的使用
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【SDL】SDL简介
举报原因:
原因补充:

(最多只允许输入30个字)