在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wold的代码的意义.下面我们来根据SDL的使用思路来讲解一下SDL核心API,各位可以将此文结合上一篇文章,我们写的HelloWorld代码进行理解和思考. 基本的SDL的使用思路,基本分为三部分:初始化 ---> 循环渲染 ---> 销毁释放资源. SDL 初始化相关方法 : SDL_Init():…
在上文 SDL 开发实战(二):SDL 2.0 核心 API 解析 我们讲解了SDL最核心的API,并结合Hello World代码了解了SDL渲染画面的基本原理. 本文我们来讲一下,如何使用SDL的API绘制基本的图形. SDL中绘制基本图形的 API并不多,主要是 点.线.矩形.填充矩形.其它图形都可以通过 点.线.矩形组合出来. 0.设置画笔的颜色 设置画笔颜色是绘制图形的首要步骤,函数方法为SDL_SetRenderDrawColor,下面是函数的原型: int SDL_SetRende…
原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章,园子里的朋友给出了不少的反馈,特别感谢金色海洋和Virus两位朋友的一些反馈.周末的这两天,对文章中开发的那个Framework做了一些改进,虽然说系列文章会慢慢的给出代码,但是这两天的一些想法让我很兴奋,迫不及待的和大家分享一下,也当是对文章中以后给出的Framework先睹为快吧. 系列文章链…
本文我们讲一下如何使用SDL_Texture将视频纹理渲染出来. 1. SDL 视频渲染相关对象 SDL 视频渲染主要涉及到四个对象:SDL_Window.SDL_Render.SDL_Texture和SDL_Surface. SDL_Window代表的是窗口的逻辑概念,它是存放在主内存中的一个对象.当我们调用SDL API 创建窗口后,它并不会被显示出来. SDL_Render 是渲染器,它也是主存中的一个对象.对Render操作时实际上分为两个阶段: 渲染阶段.在该阶段,用户可以画各种图形渲…
一.什么是SDL? SDL是 “Simple DirectMedia Layer”的缩写,SDL是一个开源的跨平台的多媒体库,封装了复杂的音视频底层操作,简化了音视频处理的难度. SDL使用C语言写成,提供了数种控制图像.声音.输出入的函数,可以开发出跨多个平台(Linux.Windows.Mac OS X等)的应用软件.目前多用于开发游戏.模拟器.媒体播放器等多媒体应用领域. 1. SDL 库分类 SDL库分为 Video.Audio.CD-ROM.Joystick 和 Timer 等若干子系…
为什么要用多线程?在音视频领域主要是实现音视频同步.实现了音视频同步,我们的播放器就基本上合格了. 这里我们将讲解一下SDL的多线程与锁机制. 多线程的好处主要是能使程序更加充分利用硬件(主要是CPU)的性能.但是也存在相应的隐患,如果多线程管理不好,会出现协调问题. 引进的机制:线程的互斥与同步 互斥:同一个资源在一定时间内只能由一个方法访问. 同步:一个方法完成后的内容需要同步到其他的方法,在由其他方法操作完成后的内容. 锁与信号量 锁用于完成互斥:信号量用于同步. 锁的种类:读写锁.自旋锁…
在前面学习SDL的例子运行时,我们发现我们的窗口只停留了几秒,但是如果设置更长时间显然也有其他的弊端. 那么有没有一种好的办法可以解决这个问题呢?例如:能不能让窗口一直显示,直到检测到用户用鼠标点击关闭按钮后才关闭呢? 答:显然可以! 下面就来介绍一下SDL的事件处理机制. 1. SDL 事件处理机制原理 SDL事件就是键盘事件,鼠标事件,窗口事件等.SDL将所有事件都存放在一个队列中.所有对事件的操作,其实就是对队列的操作. 而SDL对这些事件都做了封装,提供了统一的API,下面我们就来详细的…
前面铺垫了这么多,现在终于进入核心的主题了,那就是使用SDL播放视频,本节我们将使用SDL播放YUV视频,也就是做一个YUV播放器. 下面说明一下使用SDL播放YUV视频的基本流程,主要分为两大部分:初始化SDL.循环显示画面. 1. 初始化SDL 1). 初始化SDL (SDL_Init)2). 创建窗口(SDL_CreateWindow)3). 基于窗口创建渲染器(SDL_CreateRenderer)4). 创建纹理(SDL_CreateTexture) 2. 循环显示画面 1). 设置纹…
在上文,我们做了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…
原文:[原创].NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) .NET 业务框架开发实战之十 第一阶段总结,深入浅出,水到渠成(后篇) 前言:接着上篇来. 系列文章链接: [原创].NET 分布式架构开发实战之一 故事起源 [原创].NET 分布式架构开发实战之二 草稿设计 [原创].NET 分布式架构开发实战之三 数据访问深入一点的思考 [原创].NET 分布式架构开发实战之四 构建从理想和实现之间的桥梁(前篇) [原创].NET 分布式架构开发实战五 Framewo…