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 有个列表,总之非常多。

http://blog.csdn.net/nightmare/article/details/7457

DirectX的替代品 SDL 简介的更多相关文章

  1. SDL 简介

    SDL 简介 什么是SDL? 即 Simple DirectMedia Layer,使用 LGPL 许可证. 免费的跨平台多媒体应用编程接口 用于游戏.游戏开发工具.模拟器.样本演示.多媒体应用等 它 ...

  2. SDL简介(网络汇总)

    摄像头视频播放采用sdl,下面简单介绍下.不保证正确及网址永远有效.后面文章采用tao框架http://sourceforge.net/projects/taoframework/      SDL. ...

  3. VS2013下搭建SDL开发环境

    什么是SDL? SDL是 "Simple DirectMedia Layer"的缩写,它是一个开源的项目. 为多媒体编程而设计 SDL是一个跨平台的多媒体库,它通过OpenGL和2 ...

  4. 多媒体开发库 之 SDL 详解

    SDL 简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的 ...

  5. 带你了解SDL

    SDL(英语:Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可 ...

  6. FFmpeg再学习 -- SDL 环境搭建和视频显示

    继续看雷霄骅的 课程资料 - 基于FFmpeg+SDL的视频播放器的制作 一.SDL 简介 参看:WIKI -- Simple DirectMedia Layer 参看:最简单的视音频播放示例9:SD ...

  7. SDL

    SDL介绍 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代 ...

  8. 【音视频连载-001】基础学习篇- SDL 介绍以及工程配置

    技术开发故事会连载 这是音视频基础学习系列的第一篇文章,主要讲解 SDL 是什么以及为什么要用到它,看似和音视频没啥卵关系,其实必不可少. SDL 简介 SDL 是 "Simple Dire ...

  9. 转:SDL2源代码分析

    1:初始化(SDL_Init()) SDL简介 有关SDL的简介在<最简单的视音频播放示例7:SDL2播放RGB/YUV>以及<最简单的视音频播放示例9:SDL2播放PCM>中 ...

随机推荐

  1. tensorflow 函数接口的理解

    1. tf.nn.softmax tf.nn.softmax(logits, dim=-1, name=None) w*x+b ⇒ logits softmax 函数执行的操作:exp(logits) ...

  2. 一起学Python:正则表达式概述

    re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1. re模块的使用过程 #coding=utf-8 # 导入re模块 import re # 使 ...

  3. WPF 渲染级别

    原文:WPF 渲染级别 很少人会知道 WPF 也可以知道当前的显卡能支持的渲染级别. 根据显卡的不同,包括显存.纹理等的支持是否打到要求,指定渲染级别. 使用 System.Windows.Media ...

  4. Modbus 通信协议详解

    一.Modbus 协议简介     Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了 ...

  5. Win7 64有点找不到MSVCP71.DLL和MSVCR71.dll

     现象: win7启动好多程序都报找不到MSVCP71.DLL,网页上不去,可是非常奇怪的是好像在线给系统打补丁没有受到不论什么影响,能正常打补丁. 解决: 从本机搜索了一下msvcp71.dll ...

  6. 如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置

    用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局. 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置. 在处理子窗口鼠标事件时变的很麻烦.主 ...

  7. 设计模式(四)The Factory Pattern 出厂模式

    一.简单工厂 定义:定义一个创建对象的接口,可是由其子类决定要实例化的对象是哪一个,工厂方法让类的实例化推迟到子类. 通俗的来讲就是由工厂方法确定一个框架.详细的实现由其子类来完毕. 与简单工厂相比, ...

  8. 使用MVVM DataTemplate在WPF XAML视图之间切换

    原文 使用MVVM DataTemplate在WPF XAML视图之间切换 更新:这个技术的改进版本,一个不创建视图,可以在以下链接找到: http://www.technical-recipes.c ...

  9. 利用Adorner制作用于图像裁切的选择框

    原文:利用Adorner制作用于图像裁切的选择框 前天,我写了一篇"使用Adorner显示WPF控件的边界点"的文章.这次,使用从Adorner继承来写一个用于图像裁切的选择框. ...

  10. VS2005下如何安装配置编译Qt4.6

    本文将使用简单的几个步骤说明在VC 2005下如何编译安装并开发Qt4.6应用程序,其实大部分方法和Qt4.6.0是一样的,不过Qt4.6.0集成了Qt Creater,目录的形式有点改变了,现在我就 ...