在上文 SDL 开发实战(二):SDL 2.0 核心 API 解析 我们讲解了SDL最核心的API,并结合Hello World代码了解了SDL渲染画面的基本原理. 本文我们来讲一下,如何使用SDL的API绘制基本的图形. SDL中绘制基本图形的 API并不多,主要是 点.线.矩形.填充矩形.其它图形都可以通过 点.线.矩形组合出来. 0.设置画笔的颜色 设置画笔颜色是绘制图形的首要步骤,函数方法为SDL_SetRenderDrawColor,下面是函数的原型: int SDL_SetRende…
内容简介 1.课程大纲 2.第三部分第一课: SDL开发游戏之安装SDL 3.第三部分第二课预告: SDL开发游戏之创建窗口和画布 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串…
在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wold的代码的意义.下面我们来根据SDL的使用思路来讲解一下SDL核心API,各位可以将此文结合上一篇文章,我们写的HelloWorld代码进行理解和思考. 基本的SDL的使用思路,基本分为三部分:初始化 ---> 循环渲染 ---> 销毁释放资源. SDL 初始化相关方法 : SDL_Init():…
本文我们讲一下如何使用SDL_Texture将视频纹理渲染出来. 1. SDL 视频渲染相关对象 SDL 视频渲染主要涉及到四个对象:SDL_Window.SDL_Render.SDL_Texture和SDL_Surface. SDL_Window代表的是窗口的逻辑概念,它是存放在主内存中的一个对象.当我们调用SDL API 创建窗口后,它并不会被显示出来. SDL_Render 是渲染器,它也是主存中的一个对象.对Render操作时实际上分为两个阶段: 渲染阶段.在该阶段,用户可以画各种图形渲…
为什么要用多线程?在音视频领域主要是实现音视频同步.实现了音视频同步,我们的播放器就基本上合格了. 这里我们将讲解一下SDL的多线程与锁机制. 多线程的好处主要是能使程序更加充分利用硬件(主要是CPU)的性能.但是也存在相应的隐患,如果多线程管理不好,会出现协调问题. 引进的机制:线程的互斥与同步 互斥:同一个资源在一定时间内只能由一个方法访问. 同步:一个方法完成后的内容需要同步到其他的方法,在由其他方法操作完成后的内容. 锁与信号量 锁用于完成互斥:信号量用于同步. 锁的种类:读写锁.自旋锁…
一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成,提供了数种控制图像.声音.输出入的函数,可以开发出跨多个平台(Linux.Windows.Mac OS X等)的应用软件.目前多用于开发游戏.模拟器.媒体播放器等多媒体应用领域. 1. SDL 库分类 SDL库分为 Video.Audio.CD-ROM.Joystick 和 Timer 等若干子系…
在上文,我们做了YUV播放器,这样我们就入门了SDL播放视频.下面我们来做一个PCM播放,即使用SDL播放PCM数据. 下面说明一下使用SDL播放PCM音频的基本流程,主要分为两大部分:初始化SDL.循环播放数据. 1. 初始化SDL 1). 初始化SDL 执行的方法为SDL_Init(SDL_INIT_AUDIO) 2). 打开音频设备 使用SDL_OpenAudio()打开音频设备.该函数需要传入一个SDL_AudioSpec的结构体. 这里SDL_OpenAudio() 函数的原型为: i…
前面铺垫了这么多,现在终于进入核心的主题了,那就是使用SDL播放视频,本节我们将使用SDL播放YUV视频,也就是做一个YUV播放器. 下面说明一下使用SDL播放YUV视频的基本流程,主要分为两大部分:初始化SDL.循环显示画面. 1. 初始化SDL 1). 初始化SDL (SDL_Init)2). 创建窗口(SDL_CreateWindow)3). 基于窗口创建渲染器(SDL_CreateRenderer)4). 创建纹理(SDL_CreateTexture) 2. 循环显示画面 1). 设置纹…
在前面学习SDL的例子运行时,我们发现我们的窗口只停留了几秒,但是如果设置更长时间显然也有其他的弊端. 那么有没有一种好的办法可以解决这个问题呢?例如:能不能让窗口一直显示,直到检测到用户用鼠标点击关闭按钮后才关闭呢? 答:显然可以! 下面就来介绍一下SDL的事件处理机制. 1. SDL 事件处理机制原理 SDL事件就是键盘事件,鼠标事件,窗口事件等.SDL将所有事件都存放在一个队列中.所有对事件的操作,其实就是对队列的操作. 而SDL对这些事件都做了封装,提供了统一的API,下面我们就来详细的…
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 前文<五分钟搞懂spring-cloud-square>详细介绍了什么是spring-cloud-square,以及三种实现类型的详细概念,爱动手的您已迫不及待想编码体验spring-cloud-square了,本篇咱们就来畅快实战,体验这个spring官方带给我们的smart client 如标题所述,接下里咱们会将spring-clou…