﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-一路向北-文章分类-图形图像</title><link>http://www.cppblog.com/deane/category/5582.html</link><description>        前进......</description><language>zh-cn</language><lastBuildDate>Wed, 21 May 2008 20:24:09 GMT</lastBuildDate><pubDate>Wed, 21 May 2008 20:24:09 GMT</pubDate><ttl>60</ttl><item><title>SDL简介</title><link>http://www.cppblog.com/deane/articles/37141.html</link><dc:creator>李阳</dc:creator><author>李阳</author><pubDate>Thu, 22 Nov 2007 08:30:00 GMT</pubDate><guid>http://www.cppblog.com/deane/articles/37141.html</guid><wfw:comment>http://www.cppblog.com/deane/comments/37141.html</wfw:comment><comments>http://www.cppblog.com/deane/articles/37141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deane/comments/commentRss/37141.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deane/services/trackbacks/37141.html</trackback:ping><description><![CDATA[<div class=tit>SDL简介</div>
<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt>
            <p>什么是SDL？<br>即 Simple DirectMedia Layer，使用 LGPL 许可证。</p>
            <p>免费的跨平台多媒体应用编程接口 <br>用于游戏、游戏开发工具、模拟器、样本演示、多媒体应用等 <br>它能做什么？<br>视频、音频、事件、CDROM支持、线程、计时器、各种图象文件格式读取、快速绘图、混音、游戏杆支</p>
            <p>持、网络、MPEG解码等等，且CPU字节顺序无关。 </p>
            <p>大体上与DirectX比较对应关系如下：</p>
            <p>SDL_Video、SDL_Image、OpenGL —— DirectDraw、Direct3D <br>SDL_Audio、SDL_Mixer —— DirectSound <br>SDL_Joystick、SDL_Base —— DirectInput <br>SDL_Net —— DirectPlay <br>SMPEG、SDL_Video、SDL_Audio、SDL_Sound、SDL_Filter —— DirectShow <br>字体、窗口管理等其他实用工具和大量样例 <br>支持哪些平台？<br>Linux 随系统安装 <br>Win32 需一个到几个较小的DLL <br>BeOS <br>MacOS, MacOS X <br>其他非官方移植 <br>可以在哪些编程语言中使用？<br>几乎所有！SDL本身用 C 写成，有各种语言的接口。简单的函数调用，不需要COM。</p>
            <p>个人观点（不代表任何团体和他人）<br>总的来说，SDL并不怎么优秀，但它是少数的DX替代品之一。有人会问为什么非得不用DX，也没有非得</p>
            <p>不用，至少懒人总是希望用更少的功夫做更多的 事。对大多数人来说，无论DX、OpenGL还是SDL，都是</p>
            <p>低层API，尤其DX，如果您精通DX，那么恭喜，您的硬件知识一定也不错。留心的话就会发 现今天的游</p>
            <p>戏很多都提供选项：Direct3D、OpenGL、Glide还是Software，既是说很多游戏厂商都根据需要设计了</p>
            <p>自己的高层API， 底层是可以替换的。那么也许有人说水平高的厂商都是充分开发硬件功能才有高性能</p>
            <p>的表现，那么我举个例子，很多2D游戏的渲染虽然用了 DirectDraw，但却是纯软件在内存帧缓冲区渲</p>
            <p>染，最后调用DirectDraw将图象Swap到屏幕。对于2D游戏加今天的机器配置，GDI加直 接帧缓冲操作已</p>
            <p>经足够，需要更先进的渲染能力时就要使用3D技术，这也是在DX8中DirectDraw和Direct3D都被基于3D</p>
            <p>的 DirectGraphics替换掉的原因。但最主要的是，选择SDL意味着跨平台。</p>
            <p>回到正题。象DX一样，SDL的各个部分是可以单独使用的，但必须有SDL_Base。窗口消息管理方式很古</p>
            <p>董，写过Win32程序的一定还记得switch...case，没错SDL用就是这个，但完全可以不用它的。SDL的 C </p>
            <p>风格很浓，就像DirectX的COM风格很浓一样，用非 C 类语言的人会更愿意封装一下再用。</p>
            <p>与DX相比，SDL有更快的启动速度，方便的调试（调试过DX程序吗？:( ），简洁的接口，很小的运行时</p>
            <p>库，当然首要的是跨平台。SDL直接支持很多媒体文件格式，与DX比起来非常的方便。但SDL即简单直接</p>
            <p>访问媒体层，不象DX支持那么多功能，当然也因为不是每个平台都能提供那么多功能。</p>
            <p>样例代码上说，比起DX，SDL的样例非常短小精悍，程序流程是直线式，效果上一点也不差。非C语言的</p>
            <p>翻译版本保留了C的风格，没有利用先进的语言特性，是个遗憾。至于帮助文件，绝对不如DirectX，很</p>
            <p>多有用的信息是头文件里的注释。但毕竟 C 接口比COM简单得多，看看函数名和样例也就会用了。但没</p>
            <p>有中文资料，不爱看英文的可能会头痛。可能的话大家分工翻译一下，毕竟比DX文档少多了。</p>
            <p>详细信息在哪里？<br><a href="http://www.libsdl.org/">http://www.libsdl.org/</a> SDL首页</p>
            <p><a href="http://www.delphi-jedi.org/">http://www.delphi-jedi.org/</a> Delphi接口项目首页</p>
            <p><a href="http://jsdl.sourceforge.net/">http://jsdl.sourceforge.net/</a> Java接口首页</p>
            <p><a href="http://csgl.sourceforge.net/">http://csgl.sourceforge.net</a> C#接口首页</p>
            <p><a href="http://phpsdl.sourceforge.net/">http://phpsdl.sourceforge.net</a> php接口首页</p>
            <p>使用SDL的游戏有哪些？<br><a href="http://www.libsdl.org/games.php">http://www.libsdl.org/games.php</a></p>
            <p><br>有个列表，总之非常多 </p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cppblog.com/deane/aggbug/37141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deane/" target="_blank">李阳</a> 2007-11-22 16:30 <a href="http://www.cppblog.com/deane/articles/37141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>