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

关于SDL,在简介里面,有一些概念,但是很多人还是留言,不清楚到底是个什么。这节,我简单总结下:

我们如何将一张图显示在屏幕上。这里简单的分为几个部分,硬件屏幕,驱动程序,软件部分。SDL不直接关注硬件屏幕,而是关注每个平台下的屏幕驱动程序。比如window下的DirectX,linux下的x11 ,以及android下的opengl es。SDL通过将这三个平台,当然不止这三个平台的屏幕驱动,封装成一套对外统一的API调用,让使用者可以不关注具体某个平台,可以快速开发图像的绘制操作。SDL的核心,便是如此。

在此基础上,SDL支持了各种图片加载,渲染,各种图片的像素格式转换,比如RGB565转换到RGB888等等。SDL的主要任务,便是完成图像的加载,渲染显示,其他方向都比较单薄,对于开发游戏来说,显得力不从心,由于其没有配套的开发组件,比如界面库,动画库,粒子库等等,都是没有的。然而为什么选它呢?

算是一个巧合而已,做ffmpeg的移植,有人使用SDL做了最终的解码一帧图像的显示,如此做出视频播放器。而同时,自己在移植一款游戏,西游释厄转,一款fba游戏模拟器,网上使用了sdl1.2引擎,然而sdl1.2用的是framebuffer,导致游戏渲染很慢,大大降低了游戏的流畅度,于是乎自己花费一段时间,研究sdl2.0的框架,将此游戏的流程分析完后,把sdl2.0合入进去,使用opengles硬件加速,提高性能。

完成上面的几个事情后,发现sdl挺好玩的,既然自己已经熟悉了基本流程,也对sdl的整体过程比较熟悉,于是就有了记录,开始整理,画流程,框架,想既然这个讲解的比较少,那就花些心思,研究一番,整理成系列讲解,于是就有了这些内容。

记住,sdl的讲解,可以作为兴趣学习,它不是成熟的游戏开发引擎,但却是非常成熟,跨平台的一套渲染引擎。它本身做的事情非常简单,就是让一张图片,可以显示到更多平台,同时附加一些音频编解码而已。诚然,sdl不是你开发游戏的首选,但却是不可多得的,代码不算复杂,可以深入学习,掌握一套跨平台的开发流程,思路,同时理解图像格式的分类,转化,运算的具体实现。

当然,后续我会展开,将西游释厄传的移植过程,同时这个可以玩拳皇97,是不是很兴奋? 在移植完游戏的同时,我会移植一个gui库,当前进行到一半,因为工期比较长,所以会较晚出来,在移植完gui之后,会在此框架上做一款游戏开发,进行深入练习。

学习,往往需要持之以恒,敬请期待!!

当前工程代码已经上传:

https://github.com/luxiaoming/SDL-study

SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。从这些属性我们可以看出,SDL基本上可以认为是为以电脑游戏为核心开发的多媒体库。 SDL支持主流的操作系统,包括Windows和Linux。在官方的介绍中,我们可以找到它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL本身从C语言开发,并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(Including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl. ) SDL在GNU LGPL version 2下发布,这意味着你可以免费的使用。并且可以免费的用于商业软件的制作(只要你直接使用SDL的动态链接库,Windows下的SDL.dll)。如果你将SDL库编译进了自己的二进制代码中,你需要指明你所使用的SDL库的版本以及包括你自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的多媒体库完全合法的免费开发商业游戏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员入门进阶(免费辅导开题报告)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值