上一篇:无
下一篇:持续补充中…

 

前言

  开发过程中,需要操作一些硬件,如播放音频、播放视频,SDL作为通用的C库,可以实现同一套代码操作设备。

 

SDL简介

  Simple DirectMedia Layer是一个跨平台的开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级访问。它用于视频播放软件、模拟器和流行游戏,包括Valve获奖目录和许多不起眼的捆绑游戏。
  SDL正式支持Windows、macosx、Linux、iOS和Android。源代码中可以找到对其他平台的支持。
  SDL是用C++编写的,用C++来工作,并且还有其他几种语言的绑定,包括C语言和Python。
  sdl2.0是在zlib许可下发布的。此许可证允许您在任何软件中自由使用SDL。

 

SDL功能

  

 

SDL下载

  当前最新的版本2.0.12,官方地址:http://www.libsdl.org
  下载版本包含了2.0.12版本的windows(zip)和linux(tar.gz)源文件
  CSDN下载地址:https://download.csdn.net/download/qq21497936/12578395
  QQ群:1047134658(点击“文件”搜索“SDL”,群内与博文同步更新)。

 

SDL编译

步骤一:解压文件夹

  

步骤二:使用CMake配置项目

  配置路径,勾选配置相关的选项,然后点击配置:
  
  配置生成工程的编译器类型和具体的编译器,如下图:
  
  选择Qt5.9.3,mingw32的c和c++编译器,如下图:
  
  
  生成工程,如下图:
  
  配置成功,然后“Generate”生成工程,如下图:
  
  修改一下安装路径,方便提取模块化,再配置然后生成工程。
  

步骤三:使用mingw32编译

  打开Q5的mingw32编译命令行:
  
  切换到生成工程的路径:
  
  开启四线程编译:
  

步骤四:编译成功

  

步骤五:安装install

  
  

 

模块化

  

 

Demo

  该Demo为SDL模块化的测试环境,仅用于测试添加模块后,SDL环境配置是否成功。

测试代码

bool SDLManager::testEnv()
{
// 初始化SDL
if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)== -1))
{
// 初始化失败,打出错误
qDebug() << __FILE__ << __LINE__
<< "Failed to SDL_INIT_VIDEO|SDL_INIT_AUDIO"
<< SDL_GetError();
return false;
}else
{
qDebug() << __FILE__ << __LINE__
<< "succeed to SDL_INIT_VIDEO|SDL_INIT_AUDIO";
}
SDL_Quit();
return true;
}

测试结果

  

 

工程模板:对应版本号v1.0.0

  对应版本号v1.0.0:开发环境模板

 

上一篇:无
下一篇:持续补充中…

 

SDL开发笔记(一):SDL介绍、编译使用以及工程模板的更多相关文章

  1. SDL开发笔记(二):音频基础介绍、使用SDL播放音频

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. iOS开发笔记18:一些编译、开发调试、打包的细节整理

    1.以链库的方式引用第三方库 一些特殊场景可能会要求使用链库的方式使用第三方库,大体设置如下: ①Other Linker Flags里进行设置,格式为-l+库名称 ②Libray Search Pa ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. 详细介绍Qt,ffmpeg 和SDL开发

        Qt 与 ffmpeg 与 SDl 教程是本文要介绍的内容,从多个角度介绍本文,运用了qmake,先来看内容. 1.  注释 从“ #” 开始,到这一行结束. 2.  指定源文件 1.     ...

  5. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  6. libzip开发笔记(二):libzip库介绍、ubuntu平台编译和工程模板

    前言   Qt使用一些压缩解压功能,选择libzip库,libzip库比较原始,也是很多其他库的基础支撑库,编译过了windows版本,有需求编译一个ubuntu版本的,交叉编译需求的同样可参照本文章 ...

  7. zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板

    前言   Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下.   版本编译引导 zlib在windows上的mingw32 ...

  8. libx264开发笔记(一):libx264介绍、海思平台移植编译

    前言   在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上.   相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...

  9. SDL 开发实战(一):SDL介绍及开发环境配置

    一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成 ...

  10. Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示

    前言   在ubuntu上实现MPlayer播放器播放音乐.   Demo                Mplayer   MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...

随机推荐

  1. mysql8 initialize 命令 初学版 lower_case_table_names

    1. 今天开发找我跟我说 我安装的mysql 不对. 比较蛋疼.  需要修改一个参数 但是数据库已经初始进去了  重装起来比较麻烦. 硬着头皮搞. 2. 参数的名字为: lower_case_tabl ...

  2. JS中typeof和instanceof的区别

    01==> 浅谈JS中的typeof和instanceof的区别 // JS中的typeof和instanceof常用来变量是什么类型. // typeof一般返回以下几个字符串: // Str ...

  3. vue动画进入-完整的动画/有进入离开

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Windows堆管理机制 [1] 堆基础

    声明:这篇文章在写的时候,是最开始学习这个堆管理机制,所以写得有些重复和琐碎,基于笔记的目的想写得全一些,这篇文章写的时候参考了很多前辈的文章,已在末尾标出,某些未提及到的可以在评论补充 基于分享的目 ...

  5. 【4】 VScode最全面最实用的插件推荐,用了你就爱上了!

    相关文章: [一]tensorflow安装.常用python镜像源.tensorflow 深度学习强化学习教学 [二]tensorflow调试报错.tensorflow 深度学习强化学习教学 [三]t ...

  6. 有用的sql笔记(工作总结)

    1.查询当前月(数字为0表示当前月份,1表示上个月,-1表示下个月,以此类推) SELECT DATE_FORMAT((CURDATE() - INTERVAL [数字] MONTH), '%Y-%m ...

  7. 金邦2.5寸SATA固态硬盘R3 2TB开箱

    上次帖子里根据坛友的反馈,然后结合狗东的搜索,找了个金邦的2.5寸的SATA的固态硬盘,图的是它的价格和容量.但是我拿到它这个实物的时候还是略有点失望,因为包装太简单,坛友里说估计是贴牌.反正已经入手 ...

  8. NOIp 2023 游记

    咕了正好一周的 NOIp 游记,是我第一篇游记,也是一张寄往四年后不得不退役的.即将画上青春句号的自己的,包含了自己的青涩.期待与成长的信笺. Day \((-\infty, -7)\) CSP-S ...

  9. P9801 [NERC2018] King Kog’s Reception

    题目传送门 前置知识 线段树 解法 第一眼感觉和 luogu P1083 [NOIP2012 提高组] 借教室 很像.本题同样采用线段树维护,\(sum_{l,r}(1 \le l \le r \le ...

  10. JS实现一个布隆过滤器

    之前专门聊过令牌桶算法,而类似的方案还有布隆过滤器.它一般用于高效地查找一个元素是否在一个集合中. 用js实现如下所示: class BloomFilter { constructor(size, h ...