1. SDL简介

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

SDL(Simple DirectMedia Layer)被广泛的用于许多著名的游戏。最著名的游戏是赢得Linux组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序员(Lead Programmer)。
2. SDL的功能
视频
设置8bpp或更高的任意色彩深度的视频模式。如果某个模式硬件不支持,可以选择转化为另一模式。
直接写入线性的图像帧缓冲(framebuffer)。
用颜色键值(colorkey)或者alpha混合属性创建surface。
Surface的blit能自动的转化为目标格式。blit是优化过的,并能使用硬件加速。x86平台上有针对MMX优化过的blit。
硬件加速的blit和fill(填充)操作,如果硬件支持的话。
事件
提供以下事件:
应用程序的visibility发生改变
键盘输入
鼠标输入
用户要求的退出
每种事件都能通过SDL_EventState()关闭或者打开。
事件经由用户指定的过滤函数再被加入到内部的事件队列。
线程安全的事件队列。
音频
设置8位和16位的音频,单声道或者立体声,如果格式硬件不支持,可以选择转换。
由独立的线程执行音频部分,并提供用户回调(callback)机制。
设计上考虑到了客户定制的软混音器,但实际上在例程中就包含了一个完整的音频/音乐输出库。
CD音频
完整的CD音频控制API
线程
简单的线程创建API
用于同步的简单的二进制信号量(semaphores)
定时器
读取已流逝的毫秒数。
等待指定的毫秒数。
设置一个10毫秒精度的周期性定时器。
字节序无关
侦测当前系统的字节序
快速转换数据的函数
读写指定字节序的数据

3. 跨平台性

·Linux
视频显示使用X11,利用XFree86 DGA扩展的优势,全屏显示使用新的w MTRR加速。
声音使用OSS API。
使用clone()系统调用和SysV IPC,或者glibc-2.1的pthreads实现线程。
·Win32
有两个版本,一个是适合所有基于Win32的系统的安全版本,另一个是基于DirectX的高性能版本。
安全版本的视频显示采用GDI。高性能版本采用DirectDraw,并支持硬件加速。
安全版本的音频回放采用waveOut API。高性能版本采用DirectSound
·BeOS
视频显示采用BWindow。
音频回放采用BSoundPlayer API。
·非正式的移植版本,进展中Solaris, IRIX, FreeBSD MacOS

4. SDL扩展

SDL内置了调用OpenGL的函数。
通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关的使用等。
SDL也有其他语言的包装,可以在这里查看 SDL用C语言写成,但是可以很容易在C++下面工作,并且SDL绑定了许多其它的语言,这其中就包括Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, and Smalltalk。
包装得比较好的是python语言的pygame。不过仍然建议你熟悉c/c++环境下的SDL后再使用,会得心应手许多。
最后,我们来了解一下SDL的版权问题,SDL在GNU LGPL 2(一个国际上的开源组织)下发布,这个版本允许你将SDL以动态链接库(dynamic link library)的形式免费地用于商业游戏软件的开发。
参考文档:百度百科

【SDL】SDL简介相关推荐

  1. ubuntu16.04 编译出错:fatal error: SDL/SDL.h: No such file or directory

    在ubuntu 16.04编译神经网络代码时候,遇到了这样一种错误? fatal error: SDL/SDL.h: No such file or directory 原因是SDL库没有安装,根据你 ...

  2. SDL游戏开发之一-SDL的简介

    本教程为一个长系列,旨在于从零开始边学习SDL边开发游戏. 一.什么是SDL? SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提 ...

  3. android 编译 sdl,SDL编译 - Android本地视频播放器开发_Linux编程_Linux公社-Linux系统门户网站...

    在上一章  Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)[http://www.linuxidc.com/Linux/2013-06/85955p5.htm]中使用Ope ...

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

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

  5. GUI 图片显示(SDL 多媒体开发库)——基于 rt-smart 微内核操作系统

    目录 SDL 跨平台多媒体开发库简介 快速体验 rt-smart:GUI SDL SDL GUI 开发环境搭建及演示 硬件环境搭建 软件环境搭建 1.下载 AR-Pi Smart SDK 2.下载和安 ...

  6. SDL是什么,能干什么,为什么我们要学习它?

    关于SDL,在简介里面,有一些概念,但是很多人还是留言,不清楚到底是个什么.这节,我简单总结下: 我们如何将一张图显示在屏幕上.这里简单的分为几个部分,硬件屏幕,驱动程序,软件部分.SDL不直接关注硬 ...

  7. 最简单的基于FFMPEG+SDL的音频播放器

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  8. 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  9. 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL

     内容简介 1.课程大纲 2.第三部分第一课: SDL开发游戏之安装SDL 3.第三部分第二课预告:SDL开发游戏之创建窗口和画布 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并 ...

  10. 最简单的基于FFMPEG SDL的音频播放器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ==== ...

最新文章

  1. 难忘的一天——装操作系统(四)
  2. 2023年中国AI论文影响力超越美国?网友:长期看,数量不等于质量
  3. [life]见证本届世界杯意大利的出局
  4. Matlab的数组的小知识和方法
  5. 使用Eric构建Caffe应用程序-Baby年龄识别
  6. 虚拟机Ubuntu18.04 root下 连接 windows 中 winScp
  7. 61setproperty对象
  8. 零基础学python用哪本书好-零基础学python推荐几本python学习的书籍
  9. Cadence Allegro智能创建PCB封装库
  10. C#Winform使用火狐firefox内核GeckoWebBrowser
  11. FMEA软件版本及差异管理(FMEAHunter)
  12. IDEA 使用Tomcat热部署
  13. 混合动力simulink模型 转卖新能源混动车型模式转换说明,包含HCU模式转换simulink框图及说明文档
  14. Hexo-NexT主题添加评论功能(来必力、Hypercomments、畅言、友言)
  15. 疯癫的我到了巅峰 -- 我的成人礼
  16. python做flash帧动画_[练习]利用CSS steps 实现逐帧动画
  17. Elasticsearch:运用 Java 对索引文档进行搜索
  18. PHP2019参考文献,2019论文参考文献格式
  19. Android 线程池的使用
  20. JS基础-尚硅谷-滚动条-视频P110

热门文章

  1. .NET核心正则类详解
  2. 在.Net 模板页中使用CSS样式
  3. 安装deepin系统步骤
  4. hikaricp 连接池分析_数据库连接池终于搞对了,这次直接从100ms优化到3ms!
  5. Java黑皮书课后题第7章:7.4(分析成绩)编写一个程序,读入个数不确定的考试分数,并且判断有多少个分数是大于或等于平均分,多少个分数是低于平均分的。输入一个负数表示输入结束。假设最高分是100
  6. 中介者模式(Mediator Pattern)
  7. [SDOI2013]直径 (树的直径,贪心)
  8. vue_ajax插件Axios
  9. 设计模式之: 装饰器模式
  10. typedef 与 define