SDL是什么?它是一个集输入控制,音频处理,视频处理于一身的跨平台底层函数库。SDL的一个主要应用领域就是游戏开发。很多知名的游戏都是以它为基础的。由于它的易用,高性能以及跨平台等诸多优点。被广泛的应用在各种操作系统之中。

SDL本身是使用C语言写成的。对C/C++语言具有原生的支持。与此同时,它也被绑定到了其他编程语言之中,这些语言包括 Ada, C#, D, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk等。

SDL的另外一个优势是,它是以LGPLv2发布的。这表示SDL在商业产品中使用将会更加自由。

在当前版本的SDL中,涵盖了视频处理(video),音频处理(audio),窗口管理(window management),事件处理(event),控制手柄处理(joystick),光盘处理(CD-ROM),多线程( Multi-threaded Programming )以及时间管理(time)等几个部分。

考虑到能够与大家进行交流,我会陆续使用一些篇幅来介绍SDL在某些方面的编程方法,期间也会涉及到SDL函数库的内部实现方法(知其然而不知其所以然非吾所欲也)。所以,此系列文章并非局限在技术文档层面上,而是一个交流的平台。文中会涉及到示例,方法,原理,设计模式等一些问题,希望与大家共同探讨,这也是我的文章的一贯风格。至于涵盖的内容,以视频,事件处理为主。其他内容是否涵盖,视情况而定。

我一直秉承着在实践中学习的观点。于是,对于那些对SDL不了解的朋友们。写出一个类似”hello world!“这样的程序。是我们今后实践的一个基础。那么接下来的篇幅我们就会把重点放在怎样使用SDL成功编译运行一个最短的程序。

请看代码:

这段代码很简单。在确保头SDL头文件被包含的情况下,程序自定义了两个SDL资源初始化和释放函数。其中分别调用了SDL_Init以及SDL_Quit两个函数。而SDL_Init函数带有一个参数,它表示初始化哪些SDL资源。完整的列表如下:

可想而知,作为全局初始化函数,SDL_Init函数必须在所有SDL操作之前被调用。SDL_Quit也是一样。

下面我们尝试编译这段程序,在linux下,建议编写Makefile来编译程序。如果你是在其他操作系统中编译这段代码,请参考SDL在相关系统或工具中的配置方法。

一个典型的Makefile模板如下:

本文不是Makefile普及文章,上边代码的实现细节将不涉及。但这里需要强调的是,我们在编译使用SDL的程序时,需要提供附加的编译参数,最好由pkg-config来提供:

pkg-config --cflags sdl

而链接参数则需要使用下面的格式:

pkg-config --libs sdl

这一步也许在其他环境下会略有不同。但无论如何,我们的目的是能够找到SDL头文件和链接库。

将前面C程序代码保存成文件,命名为sdltest。并放在与Makefile相同的目录下编译。

这就是第一段SDL程序,虽然运行不会有什么效果,但这就表示SDL初始化的顺利完成。

SDL解析——SDL简介相关推荐

  1. 【SDL】SDL简介

    1. SDL简介 SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相 ...

  2. TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略

    TF之TF flags:TF flags(命令行解析)的简介.安装.使用方法之详细攻略 目录 TF flags的简介 TF flags的安装 TF flags的使用方法 TF flags的简介 1.f ...

  3. fastjson解析json简介

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 阿里巴巴FastJson是一个Json处理工具包,是一个Java语言编写的高性能功能完善的JSON库.,包括&quo ...

  4. 【SDL】SDL学习笔记二 定时器

    定时器相关API(SDL_timer.h):   1. Uint32 SDL_GetTicks(): 获取从SDL库初始化(定时器模块初始化)开始到当前的运行时间(ms);   2. Uint64 S ...

  5. 【SDL】SDL学习笔记一 SDL的子系统的初始化和退出

    使用SDL库之前需要装载各个子系统,就像要放电影,必须给播放器提供影片一样,程序退出的时候,应该先退出子系统,释放资源. 1. 初始化SDL函数 该函数必须是在程序开始的地方调用 int SDL_In ...

  6. Python静态类型解析工具简介和实践

    简介: Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型,但类型不匹配的操作是不被允许的.动态类型帮助开发者写代码轻松愉快,然而,俗话说:动态一时爽,重构火葬场.动态类型也带来了许 ...

  7. Python 静态类型解析工具简介和实践

    一 背景 Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型(动态),但类型不匹配的操作是不被允许的(强类型,如str和int两个变量无法相加). 动态类型帮助开发者写代码轻松愉快, ...

  8. 数学表达式解析器简介

    2019独角兽企业重金招聘Python工程师标准>>> 在实际项目开发中如果需要解析数学公式,无须再运用解释器模式进行设计,可以直接使用一些第三方解析工具包,它们可以统称为数学表达式 ...

  9. XML解析技术简介——(一)

    解析技术(两种) 基本的解析方式有两种,一种叫SAX,另一种叫DOM.SAX是基于事件流的解析,DOM是基于XML文档树结构的解析. DOM:document object model   W3C组织 ...

最新文章

  1. you have new email in /var/spool/mail/root/
  2. R语言包_manipulate
  3. Java8 lambda函数式编程
  4. 使用malloc创建头结点的坑
  5. 二级MS Office公共基础知识错题本(1)
  6. matlab窗函数 响应,matlab窗函数设计方案.doc
  7. Edge好用么?几条你不知道的Edge小技巧
  8. Earthquake
  9. 大数据行为分析包含哪些功能
  10. 云时代的“双态IT”运维思路
  11. CC00024.NavigationLog——|Open网络2.4.9服务端/客户端部署/本地client配置/连接成功测试|
  12. c语言链表拆分,P2 拆分链表
  13. 【PyG入门学习】三:信息传递机制
  14. nn.Conv2d详解
  15. win10如何修改锁屏(欢迎界面)的用户名
  16. BTC系列 - UTXO事务模型
  17. 汽车市场勇进派 乐车邦林金文的逆周期生意
  18. 美团 YOLOv6 ORT/MNN/TNN/NCNN C++推理部署
  19. wordpress 主题 neutral 下载
  20. 车间追溯系统究竟是什么?

热门文章

  1. 【STM32技巧】ADC模拟量采集的几种用法
  2. GaussDB数据类型介绍
  3. ATFX:离岸人民币破6.9,距离整数关口7仅一步之遥
  4. PIP生存记 | 10%强制淘汰率? Amazon好进,不好混。
  5. 手机遥控电脑 chrome远程桌面
  6. displayl:flex布局
  7. C语言:使用指针,封装一个函数, // 使输入的奇数从小到大排列,奇数排列完毕之后,再把偶数从大到小进行排列, // 最终输出整个
  8. 计算商品过期具体时间
  9. matlab 图像分割_交通标志牌检测--限速数字框选--图像处理 matlab
  10. macOS 安装 python