SDL系列教程(一):SDL简介

原创 2006年06月22日 11:50:00

SDL教程(一)

 作者:akinggw

     在阔别半年后,我又回来了。这次回来,首先要向大家问声好,然后继续我们的游戏开发之旅。在以前的日子里,我主要在翻译一些游戏开发方面的文章,而现在,我决定自己写。从今天开始,我要向大家介绍一个非常出名的游戏开发库——SDL。

 SDL(Simple DirectMedia Layer)是什么呢?根据他的表面意思,翻译过来就是简单的指导媒体层。它的官方网站请访问  http://www.libsdl.org .

SDL 标志

SDL的作者是Sam Lantinga, Loki Entertainment Software的主力程序员(Lead Programmer)。Loki Entertainment是一家致力于向Linux移植顶尖游戏的公司。更多信息请访问 http://www.lokigames.com/

SDL是一个跨平台的多媒体函数库,被用来设计成在低层访问音频,键盘,鼠标,游戏杆,基于OPENGL(一个3D图象开发函数库)的3D 硬件,和2D图象帧缓冲区。它被广泛的用于基于MPEG的媒体播放软件,模拟器,和许多著名的游戏。最著名的游戏是赢得LIUNX组游戏开发大奖的 文明:权利的召唤(Civilization: Call To Power)。

文明:权利的召唤(Civilization: Call To Power)

 SDL是一个跨平台的函数库,几乎支持现今所有平台:Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX。

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。

最后,我们来了解一下SDL的版权问题,SDL在GNU LGPL 2(一个国际上的开源组织)下发布,这个版本允许你将SDL免费地用于商业软件的开发。

 下面,我们来详细地了解SDL的功能,这样有利于我们今后的讲解。

SDL有哪些功能?

视频

· 设置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毫秒精度的周期性定时器。 字节序无关

· 侦测当前系统的字节序

· 快速转换数据的函数

· 读写指定字节序的数据

以上就是SDL大致的功能介绍,上面的介绍来源于SDL中文介绍文档。但许多后续的开发者在不断的完善SDL。所以,现在SDL不光能实现上面的基本功能,

还有下面所列的功能:

A. 支持MPG,PNG,GIF等压缩图象文件格式的显示;

 B. 支持TrueType 字体的显示;

 C. 通过SDL_NET,可以实现网络的联接;

我会在今后的日子里详细地介绍SDL的内容,我计划先介绍SDL的基本功能,也就是上面所列的功能以及实现方法,并给出完整的代码。 然后我会介绍SDL_NET的功能和使用方法,并在今后写出一个个完整的实例。

 希望大家多多捧场,多多支持!

 关于更多内容请访问金桥科普网站( http://popul.jqcq.com  )游戏开发栏目,如果你需要游戏开发方面的书籍请参考金桥书城游戏频道(http://book.jqcq.com/category/1_70_740.html )。 如果你在阅读本篇文章时有什么好的建议请来信给我,我的E_mail: akinggw@126.com. 如果你在使用SDL时有什么问题,请到金桥科普网站(http://popul.jqcq.com  )游戏开发栏目,我将详细地为你解答。

 在下一篇文章中,我们将进入SDL的开发之旅,我将讲解如何在VC++6.0中配置SDL,并写出我们的第一个程序,

 

 好期待啊!!!!!!!!!!

 

SDL系列教程

  • 2016年06月08日 17:15
  • 2.1MB
  • 下载

【D3.js数据可视化系列教程】--(一)简介

D3.js简介

Gulp系列教程:简介和安装

本文根据@Stefan Imhoff的《Introduction to Gulp.js 1: Intro and Setup》所译,整个译文带有我们自己的理解与思想,如果译得不好或有不对之处还请同行朋...

PHP框架Yii系列教程(二):功能简介

1 MVC架构 1.1处理流程 一个Web请求在Yii内部的执行流程如下图所示: 1.2组件角色 组件名 角色与责任 index.php ...
  • dc_726
  • dc_726
  • 2013年04月28日 21:18
  • 15555

熊大UWB系列教程一: DW1000 超宽带系统简介及最小系统搭建

熊大DW1000教程系列一: DW1000 超宽带系统简介及最小系统搭建 DW1000是decawave公司于2012年推出的一款超宽带定位芯片,下面是这款芯片的详细介绍。   由介绍可以看出,这个芯...

AndEngine游戏开发系列教程(一)简介

AndEngine基于libGDX框架开发,使用OpenGL ES进行图形绘制,底层使用C++编写,通过JNI调用来实现,因此比较高效,功能强大。同时集成了Box2D物理引擎,因此能实现一些较为复杂的...
  • twlkyao
  • twlkyao
  • 2013年10月19日 10:25
  • 1080

Java集合框架系列教程一:集合框架简介

原文:Java集合框架系列教程一:集合框架简介 一个集合,即collection,有时也被称为一个容器,只是将多个元素聚集成一个单元。Collections常被用来存储、检索、操纵聚集数据以...

快节奏多人在线游戏网络入门系列教程(1):简介

简介该系列教程主要讨论快节奏多人在线游戏的网络相关的技术和算法。这是该系列教程的第一章,如果你对多人在线游戏有一定了解,可以跳过本章。 开发任何一款游戏都是一个挑战性的任务。而多人在线游戏增加了更多...
  • lsldd
  • lsldd
  • 2017年05月15日 15:19
  • 627

Java NIO系列教程(一)java NIO简介

这个系列的文章,我们开始玩一玩IO方面的知识,对于IO和NIO,我们经常会接触到,了解他们的基本内容,对于我们的工作会有特别大的帮助。这篇博文我们仅仅是介绍IO和NIO的基本概念,以及一些关键词。基本...

Codecademy-中文JavaScript系列教程-目录简介

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SDL系列教程(一):SDL简介
举报原因:
原因补充:

(最多只允许输入30个字)