SDL 简介
SDL 简介
什么是SDL?
即 Simple DirectMedia Layer,使用 LGPL 许可证。
- 免费的跨平台多媒体应用编程接口
- 用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等
它能做什么?
视频、音频、事件、CDROM支持、线程、计时器、各种图象文件格式读取、快速绘图、混音、游戏杆支持、网络、MPEG解码等等,且CPU字节顺序无关。
大体上与DirectX比较对应关系如下:
- SDL_Video、SDL_Image、OpenGL —— DirectDraw、Direct3D
- SDL_Audio、SDL_Mixer —— DirectSound
- SDL_Joystick、SDL_Base —— DirectInput
- SDL_Net —— DirectPlay
- SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter —— DirectShow
- 字体、窗口管理等其他实用工具和大量样例
支持哪些平台?
- Linux 随系统安装
- Win32 需一个到几个较小的DLL
- BeOS
- MacOS, MacOS X
- 其他非官方移植
可以在哪些编程语言中使用?
几乎所有!SDL本身用 C 写成,有各种语言的接口。简单的函数调用,不需要COM。
个人观点(不代表任何团体和他人)
总的来说,SDL并不怎么优秀,但它是少数的DX替代品之一。有人会问为什么非得不用DX,也没有非得不用,至少懒人总是希望用更少的功夫做更多的事。对大多数人来说,无论DX、OpenGL还是SDL,都是低层API,尤其DX,如果您精通DX,那么恭喜,您的硬件知识一定也不错。留心的话就会发现今天的游戏很多都提供选项:Direct3D、OpenGL、Glide还是Software,既是说很多游戏厂商都根据需要设计了自己的高层API,底层是可以替换的。那么也许有人说水平高的厂商都是充分开发硬件功能才有高性能的表现,那么我举个例子,很多2D游戏的渲染虽然用了DirectDraw,但却是纯软件在内存帧缓冲区渲染,最后调用DirectDraw将图象Swap到屏幕。对于2D游戏加今天的机器配置,GDI加直接帧缓冲操作已经足够,需要更先进的渲染能力时就要使用3D技术,这也是在DX8中DirectDraw和Direct3D都被基于3D的DirectGraphics替换掉的原因。但最主要的是,选择SDL意味着跨平台。
回到正题。象DX一样,SDL的各个部分是可以单独使用的,但必须有SDL_Base。窗口消息管理方式很古董,写过Win32程序的一定还记得switch...case,没错SDL用就是这个,但完全可以不用它的。SDL的 C 风格很浓,就像DirectX的COM风格很浓一样,用非 C 类语言的人会更愿意封装一下再用。
与DX相比,SDL有更快的启动速度,方便的调试(调试过DX程序吗?:( ),简洁的接口,很小的运行时库,当然首要的是跨平台。SDL直接支持很多媒体文件格式,与DX比起来非常的方便。但SDL即简单直接访问媒体层,不象DX支持那么多功能,当然也因为不是每个平台都能提供那么多功能。
样例代码上说,比起DX,SDL的样例非常短小精悍,程序流程是直线式,效果上一点也不差。非C语言的翻译版本保留了C的风格,没有利用先进的语言特性,是个遗憾。至于帮助文件,绝对不如DirectX,很多有用的信息是头文件里的注释。但毕竟 C 接口比COM简单得多,看看函数名和样例也就会用了。但没有中文资料,不爱看英文的可能会头痛。可能的话大家分工翻译一下,毕竟比DX文档少多了。
详细信息在哪里?
http://www.libsdl.org/ SDL首页
http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME:20450 Delphi接口项目首页
http://jsdl.sourceforge.net/ Java接口首页
http://csgl.sourceforge.net C#接口首页
http://phpsdl.sourceforge.net php接口首页
使用SDL的游戏有哪些?
http://www.libsdl.org/games.php 有个列表,总之非常多。
SDL 简介的更多相关文章
- DirectX的替代品 SDL 简介
DirectX的替代品 SDL 简介 什么是SDL? 即 Simple DirectMedia Layer,使用 LGPL 许可证. 免费的跨平台多媒体应用编程接口 用于游戏.游戏开发工具.模拟器.样 ...
- SDL简介(网络汇总)
摄像头视频播放采用sdl,下面简单介绍下.不保证正确及网址永远有效.后面文章采用tao框架http://sourceforge.net/projects/taoframework/ SDL. ...
- 多媒体开发库 之 SDL 详解
SDL 简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的 ...
- FFmpeg再学习 -- SDL 环境搭建和视频显示
继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作 一.SDL 简介 参看:WIKI -- Simple DirectMedia Layer 参看:最简单的视音频播放示例9:SD ...
- VS2013下搭建SDL开发环境
什么是SDL? SDL是 "Simple DirectMedia Layer"的缩写,它是一个开源的项目. 为多媒体编程而设计 SDL是一个跨平台的多媒体库,它通过OpenGL和2 ...
- 【音视频连载-001】基础学习篇- SDL 介绍以及工程配置
技术开发故事会连载 这是音视频基础学习系列的第一篇文章,主要讲解 SDL 是什么以及为什么要用到它,看似和音视频没啥卵关系,其实必不可少. SDL 简介 SDL 是 "Simple Dire ...
- 转:SDL2源代码分析
1:初始化(SDL_Init()) SDL简介 有关SDL的简介在<最简单的视音频播放示例7:SDL2播放RGB/YUV>以及<最简单的视音频播放示例9:SDL2播放PCM>中 ...
- 最简单的视音频播放示例9:SDL2播放PCM
本文记录SDL播放音频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...
- 最简单的视音频播放示例7:SDL2播放RGB/YUV
本文记录SDL播放视频的技术.在这里使用的版本是SDL2.实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API.在Windows平台下,SDL封装了Direct3D这类的API ...
随机推荐
- VC++的内联汇编
1.移植性差,假设是软件项目建议不要用.假设希望一段程序仅在单一设备上执行而且效率极高,能够使用内联汇编. 比方.单片机开发. 2. ......持续更新中. .... .
- C++ 中dynamic_cast<>的用法
/*这是从网上摘下的样例,主要讲述了 dynamic_cast<> 的用法.*/ /* 作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会依据基类指针是否真 ...
- stm32之CAN发送、接收详解
CAN接收报文并过滤之标识符过滤:(重点.难点) 在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的.因此,发送者以广播的形式把报文发送给所有的接收者.节点在接收报文时-根据标识符的 ...
- android的animator
3.0 以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这 ...
- arm:jlink调试和直接烧写运行的不同 [mdk s3c2440]
1.对全局变量的初始化. 2.还没发现的事例. /*************************************************/ 先上连接文件sct LR_ROM1 0x3000 ...
- TOMCAT的域名配置
链接地址:http://blog.163.com/skk1987@126/blog/static/29303413201051383548377/ 现在很多的公司的网站都是用tomcat作为应用服务区 ...
- BZOJ 1260: [CQOI2007]涂色paint( 区间dp )
区间dp.. dp( l , r ) 表示让 [ l , r ] 这个区间都变成目标颜色的最少涂色次数. 考虑转移 : l == r 则 dp( l , r ) = 1 ( 显然 ) s[ l ] = ...
- C 语言学习 之搭建环境和熟悉命令
Open Terminal 打开终端To run a command as administrator (user "root"), use "sudo <comm ...
- Android dialog 问题
1.dialog.dismiss和dialog.cancel的区别 Cancel the dialog. This is essentially the same as calling dismiss ...
- 7款Linux下阅读PDF的阅读器。
5款Linux下阅读PDF的阅读器.1. Mupdf:link 2. Adobe Reader:link 3. Foxit Reader:link 4.Evince:link 5. Okular:li ...