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

点这里可以跳转到人工智能网站

发表评论