zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

SDL简介(网络汇总)

网络 简介 汇总 SDL
2023-09-27 14:23:42 时间
摄像头视频播放采用sdl,下面简单介绍下。不保证正确及网址永远有效。后面文章采用tao框架http://sourceforge.net/projects/taoframework/     
SDL.dll 版本1.2.14
Tao.Sdl.dll 版本1.2.13
 
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
 
 

相关网站和下载:

http://sourceforge.net/projects/taoframework/
http://www.mono-project.com/archived/tao/
http://www.libsdl.org/
http://cs-sdl.sourceforge.net/index.php/news?start=54
 

1.SDL是一个2D游戏引擎(国内这么说,但是我觉得把它称为“引擎”还是太过了,我觉得引擎级别应该至少到framework了,SDL提供的功能没有这么强大。),其提供一个游戏必要的一些简单的API接口,并且非常底层。

2.SDL最牛逼之处就在于其简单、跨平台。一切基于SDL的代码都应该是高度portable的。所以可以考虑做一个基于SDL的中间件,估计挺有卖点。

3.SDL免费,开源。

4.可以搜一下著名的linux下战略类游戏 韦诺战争(貌似没有WINDOWS版本)。就是基于SDL的大作。

5.SDL貌似经常用来写跨平台播放器,很方便。

 

 

SDL里有啥?

1.技术支持
SDL团队是我见过网上办事最有效率的团队。在Sam Latinga等帮助下,一帮牛逼志愿者维护其代码,并且不断移植到新的平台。SDL的mailing list(BY CG 请原谅我的火星,看了一下貌似国外很多网站都有这种机构,把对官方的询问EMAIL记录都贴到网上的一种机制。)为SDL用户们提供永远的快捷服务。mailing list提供庞大的SDL使用信息和在游戏开发过程中的问题解决方法。

2.初始化和释放
我们平时在每个平台下开发,都要求程序员写一些平台相关的代码,来指引操作系统做什么、硬件做什么。那么,你不得不写更多的平台相关代码。你需要设置显示模式、初始化音频系统、检测鼠标或者摇杆……而且在游戏结束之后你要清空或释放这些你用到的资源。。这些代码基本在每个工程里都相同,SDL提供一种简单的机制来检测硬件,只需要几行简单的代码你就能初始化资源,释放资源就更别提了。并且SDL离的代码可以到处拷贝和复用到其他工程。

3.基于事件的输入机制
SDL提供键盘、鼠标、摇杆输入,使用事件机制,这样就是的在X11、WINDOWS或者MAC OS上的开发者感到非常亲切了。不同的是,SDL不管你在什么操作系统上,都提供给你相同的事件,并且它不会让你处理操作系统相关的那堆让你写游戏过程中不爽的事件。

4.时间和定时器
每个游戏程序都需要知道时间,并且需要知道一个行动什么时候发生。SDL提供一个跨平台的,清晰、简单、可信的时间机制和定时器API。SDL的定时器API允许同时创建上千个定时器,而且比我以前用的其他库的定时器要用的爽。

5.声音
SDL提供一套简单的API控制声卡,根据需要操控不同的硬件设备。即时硬件支持度较低,它也能干活。在这一点上非常符合它的“精简达意”哲学观。在另一方面,还有许多SDL团队不断开发出来的SDL声音库。

6.光驱
SDL提供读、播放光驱的API。无敌了!(BY CG,谁告诉我这里 Can't beat it. 咋翻译?)

7.图像
SDL提供给你一个尽情发挥图形处理的机会。你可以从像素级拿数据然后随你怎么处理,或者你可以用OPENGL来做2D、3D的硬件加速。这是在任何硬件设备上都能做的,因为OPENGL支持所有的3D显卡,它是安全、可移植的,并且很生猛的跨平台3D库。SDL可以设置视频模式,可以访问帧缓冲区,如果你需要,还为你初始化OPENGL。SDL将解除你制作全屏游戏模式的痛苦(BY CG,不知道痛苦在哪。。没用过太底层图形库的人飘过),同样,也可以做窗口游戏。

8.网络
SDL包含了一组底层的网络API,让你可以控制基于TCP/IP或者UDP/IP的scokets。这一组API和UNIX、WINDOWS的网络API很像,不同的是它只让你用网络特性,可以跨平台。并且这些API已经实现一些底层的功能,不用让你在写网络通讯代码的时候觉得痛苦。

9.线程
SDL提供一套像pthreads简单版本(BY CG,又不知道是啥了。。我靠,我太弱了)的线程API。SDL线程提供线程管理的基本函数。而且也是跨平台的。

SDL的不足之处

唯一让我觉得不爽的就是它的文档,有的地方有小错误,有的地方给得太吝啬了。但是这比起这个伟大的游戏开发库来说不算什么,这些文档带来的疑惑你都可以在写代码的过程中 或者看其他示例代码来搞定。

SDL多少¥?

免费!SDL 基于LGPL(BY CG貌似是某种免费协议机制?),你只需要遵守一些简单的规章,每个人都能获得免费的SDL认证。

 

在Win32编程中,如果要操纵2D图像,可以选择使用GDI或者DirectDraw,前者速度较慢,而后者是特定针对Microsoft平台的,在非Win32平台上移植会带来很大的麻烦。这时,你可以选择使用SDL。SDL支持多种平台:Linux、Windows, BeOS, MacOS Classic, MacOS X, FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX和QNX,同时也部分支持部分其他平台:Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64, RISC OS和SymbianOS。当然SDL本身是针对2D图像编程的,如果使用到3D编程,那么需要将SDL和OpenGL结合使用。

  SDL是用C编写的,但是也支持C++,同时其他多种语言,下面给出了其他语言的SDL的开发包的相关信息:

  ·Ada 
   AdaSDL - http://sourceforge.net/projects/adasdl/ 
  ·C# 
   SDL.Net - http://cs-sdl.sourceforge.net/ 
  ·Eiffel 
   ewg - http://ewg.sourceforge.net/ 
  ·Erlang 
   ESDL - http://www.ericsson.com/cslab/~dgud/esdl/ 
  ·Euphoria 
   SDL_Wrap - http://www.rapideuphoria.com/sdl_wrap.zip 
  ·Guile 
   guile-sdl - http://sourceforge.net/projects/guile-sdl/ 
  ·Java 
   JSDL - http://jsdl.sourceforge.net/ 
   sdljava - http://sdljava.sourceforge.net 
  ·Lisp 
   CL-SDL - http://cl-sdl.sourceforge.net/ 
   SDL for Corman Common Lisp - http://www.balooga.com/lisp_sdl.php3 
  ·Lua 
   luaSDL - http://lua-users.org/wiki/LuaModuleLuaSdl 
  ·ML 
   SDLML - http://www.HardcoreProcessing.com/Freeware/SDLML.html 
   OCamlSDL - http://ocamlsdl.sourceforge.net/ 
  ·Objective C 
   SDLOBJC - http://savannah.nongnu.org/projects/sdlobjc/ 
  ·Pascal 
   SDL4Freepascal - http://sdl4fp.sourceforge.net/ 
   JEDI-SDL - http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME 
  ·Perl 
   SDLPerl - http://sdl.perl.org 
  ·PHP 
   PHP SDL module - http://phpsdl.sourceforge.net 
  ·Pike 
   Natively supported (module SDL) - http://pike.ida.liu.se/ 
  ·Pliant 
   Pligame - http://pligame.sourceforge.net/ 
  ·Python 
   PyGame - http://pygame.seul.org/ 
  ·Ruby 
   Ruby/SDL - http://www.kmc.kyoto-u.ac.jp/~ohai/index.en.html 
   RUDL - http://rudl.sourceforge.net 

  功能

  视频 

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

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

  ·用颜色键值(colorkey)或者alpha混合属性创建用于绘图的表面(surface)。 

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

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

  事件 

  ·提供以下事件: 

  o 应用程序的visibility(可视性)发生改变 

  o 键盘输入 

  o 鼠标输入 

  o 用户要求的退出 

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

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

  ·线程安全的事件队列。

  音频 

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

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

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

  CD音频 

  ·完整的CD音频控制API 

  线程 

  ·简单的线程创建API 

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

  定时器 

  ·读取已流逝的毫秒数。 

  ·等待指定的毫秒数。 

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

  字节序无关 

  ·侦测当前系统的字节序 

  ·快速转换数据的函数 

  ·读写指定字节序的数据 

 

 

 

 

http://blog.chinaunix.net/uid-23544240-id-3077934.html

http://swee.iteye.com/blog/1435046

https://www.baidu.com/link?url=lseUErEN8Hx6pD31rBZw3EQuRILG35d-eiiIIcP4qHLum1mTNI1mpXWMUgsiHnXejIwjsrwmPGpcxHBLajTRha&wd=&eqid=b297a5800008b36a0000000555dd1373