DirectX的替代品 SDL 简介

原创 2002年08月19日 09:12:00

DirectX的替代品 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 和 OpenGL 关系

OpenGL是由SGI公司1992年7月发布,是一款基于桌面操作系统、功能强大、调用方便的底层3D图形库。 它是与硬件无关的软件接口, 可以在windows/Linux/Unix 之间移植。 针对嵌入...
  • sunny04
  • sunny04
  • 2014年01月09日 14:17
  • 3448

SDL介绍

SDL库的作用说白了就是封装了复杂的视音频底层操作,简化了视音频处理的难度。 以下转自WiKi: SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年09月23日 23:37
  • 20062

数据库结构操作。适应于access,sql server等常见的数据库。

1。建立连接。可以通过ODBC或OLEDB连接。Set gObjDC = Server.CreateObject("ADODB.Connection")dim strconn,myDSNmyDSN="...
  • Rolinson
  • Rolinson
  • 2004年07月23日 11:52
  • 702

深入浅出Direct3D

深入浅出Direct3D 蔡军生 版权所有·第 1 章 3D基础知识·1.1 什么是3D?·1.2 3D相关概念·1.3 DirectX介绍·1.4 Direct3D中3D基元·1.5 Direct3...
  • caimouse
  • caimouse
  • 2004年09月27日 15:26
  • 5053

【并行计算-CUDA开发】OpenCL、OpenGL和DirectX三者的区别

什么是OpenCL?   OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能...
  • LG1259156776
  • LG1259156776
  • 2016年09月29日 20:20
  • 1716

【DirectX11】第一篇 DirectX11简介

本系列主要翻译和参考《Real-Time 3D Rendering with DirectX and HLSL》一书(感谢原书作者),同时会加上一点个人理解或拓展。 这里是书中的代码和资源。关于D...
  • xueyedie1234
  • xueyedie1234
  • 2016年05月06日 17:27
  • 1773

Direct3D-空间物体旋转demo

Direct9 物体旋转demo
  • huiguimoyu
  • huiguimoyu
  • 2015年07月05日 00:27
  • 967

最简单的视音频播放示例4:Direct3D播放RGB(通过Texture)

本文接着上一篇文章继续记录Direct3D(简称D3D)播放视频的技术。上一篇文章中已经记录了使用Direct3D中的Surface渲染视频的技术。本文记录一种稍微复杂但是更加灵活的渲染视频的方式:使...
  • leixiaohua1020
  • leixiaohua1020
  • 2014年10月22日 02:26
  • 12626

DirectX 游戏编程之开篇

DirectX并不是一个单纯的图形API,它是由微软公司开发的用途广泛的API,它包含有Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Dire...
  • hrlnldy
  • hrlnldy
  • 2015年03月10日 23:25
  • 946

VS2013下SDL开发环境搭建

其实如果环境配置多了,我们会发现很多vc的环境配置都大同小异。先下载源文件,可以去官网下载也可以直接CSDN下载:http://download.csdn.net/detail/long636688/...
  • DaveBobo
  • DaveBobo
  • 2016年04月11日 18:06
  • 3366
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DirectX的替代品 SDL 简介
举报原因:
原因补充:

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