关闭

【SDL】SDL简介

标签: SDL简介SDLSDL游戏开发
433人阅读 评论(0) 收藏 举报
分类:

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)的形式免费地用于商业游戏软件的开发。
参考文档:百度百科

1
0
查看评论

SDL解析——SDL简介

SDL是什么?它是一个集输入控制,音频处理,视频处理于一身的跨平台底层函数库。SDL的一个主要应用领域就是游戏开发。很多知名的游戏都是以它为基础的。由于它的易用,高性能以及跨平台等诸多优点。被广泛的应用在各种操作系统之中。    SDL本身是使用C语言写成的。对C/C+...
  • davidleels
  • davidleels
  • 2010-08-25 11:49
  • 8556

SDL游戏开发系列第一话:Hello SDL

各位读者朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。从今天起博主将带领大家一起走进SDL游戏开发的世界,如果说此前的Unity3D游戏开发系列文章让大家感受到的是游戏引擎工具化开发的方便与快捷,那么这一次就让我们以SDL库为基础,通过了解游...
  • qinyuanpei
  • qinyuanpei
  • 2015-07-25 15:17
  • 4408

SDL 简单入门学习

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie讨论新闻组及文件概要实际学习使用SDL创建窗口,并绘制图形。前言        今天想要做一个简单的demo,因为一部分需要使用objecti...
  • vagrxie
  • vagrxie
  • 2010-07-15 01:52
  • 40347

在VS2015中的SDL2.0开发环境搭建

写本文的目的在于使用网络上的教程及官方的教程(如:http://www.willusher.io/sdl2%20tutorials/2013/08/15/lesson-0-visual-studio)时,编译时都会有错误: Error LNK2019 unresolved external sym...
  • himayan46
  • himayan46
  • 2017-01-03 11:31
  • 3021

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

关于SDL,在简介里面,有一些概念,但是很多人还是留言,不清楚到底是个什么。这节,我简单总结下:我们如何将一张图显示在屏幕上。这里简单的分为几个部分,硬件屏幕,驱动程序,软件部分。SDL不直接关注硬件屏幕,而是关注每个平台下的屏幕驱动程序。比如window下的DirectX,linux下的x11 ,...
  • a332324956
  • a332324956
  • 2017-10-12 19:48
  • 669

Linux CentOS安装SDL、ffmpeg

CentOS好像默认已经 svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
  • yunwen3344
  • yunwen3344
  • 2014-08-29 14:28
  • 2357

SDL2.0学习笔记6--用SDL播放音频wave文件

#include "SDL.h" struct { Uint8 *sound; // pointer to wave data Uint32 soundlen; // length of wave data int soundp...
  • finewind
  • finewind
  • 2014-11-25 11:42
  • 2231

SDL编程初步

SDL简介•作用 ▫SDL(Simple DirectMedia Layer)库的作用说白了就是封装了复杂的视音频底层交互工作,简化了视音频处理的难度。 •特点 ▫跨平台 ▫开源SDL结构如下所示。可以看出它实际上还是调用了DirectX等底层的API完成了和硬件的交互。 // test....
  • mandagod
  • mandagod
  • 2016-07-23 14:41
  • 1099

SDL显示的使用

在客户机中,特别是对于桌面级的Linux系统和所有的Windows系统来说,虚拟机中的图形显示是非常重要也是几乎必需的功能。本节主要主要介绍KVM中图形界面显示相关配置。 4.5.1 SDL的使用 SDL(Simple DirectMedia Layer)是一个用C语言编写的、跨平台的、...
  • ztsinghua
  • ztsinghua
  • 2015-11-12 10:12
  • 873

mac下使用FFmpeg+SDL的播放器编译和运行

本文参考简书:http://www.jianshu.com/p/b7a698259314 源代码:http://blog.csdn.net/leixiaohua1020/article/details/38868499 按照简书步骤XCode创建工程 语言我选择的是C++ 从http://blo...
  • u012438660
  • u012438660
  • 2017-07-03 15:50
  • 292
    个人资料
    • 访问:214686次
    • 积分:4472
    • 等级:
    • 排名:第7931名
    • 原创:221篇
    • 转载:69篇
    • 译文:3篇
    • 评论:22条
    博客专栏
    最新评论