微信号:code_gg_home

介绍:分享技术干货,分享最新新闻动态,分享开心段子,让大家轻松愉快的成长.

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

2017-10-09 20:00 陆晓明


关于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



 
代码GG之家 更多文章 如何快速掌握一门新的技术? SDL系列讲解(三) 工具安装 SDL系列讲解(二) 环境搭建 SDL系列讲解(一) 简介 android native内存检测方案(二)
猜您喜欢 机器智能与未来社会:兼谈硅谷创投新趋势 制作假币42年的绘画大师,不仅未被处决,竟还被白宫盛情邀去 Linux进程及作业管理 开工 | 一家VC能带给你什么样的成长体验? 云计算专属课堂,ZStack认证培训1706期火热报名中