首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(译)SDL编程入门(1)Hello SDL

为了使用诸如图形、声音、键盘、操纵杆等东西,你需要一个API(应用程序员接口),所有这些硬件功能转化为C++可以交互东西。 这就是SDL所做事情。...如果链接器抱怨找不到 -lSDL 或 SDL2.lib,这意味着库文件不在链接器寻找库文件地方。如果链接器抱怨说有未定义引用,可能意味着它从未被告知要链接库。...很重要一点是,函数参数是一个整数,后面是一个char*数组,返回类型是一个整数。任何其他类型main函数都会导致main未定义引用SDL需要这种类型main,所以它能兼容多种平台。...由于我们关心只是使用SDL视频子系统,所以我们只将SDL_INIT_VIDEO标志传递给它。 当出现错误时,SDL_Init返回-1。...这也处理我们从中获得SDL_Surface。释放所有内容后,我们退出SDL并返回0以终止程序

2.7K40

【FFmpeg】SDL 音视频开发 ④ ( SDL 多线程 | SDL_Thread 结构体 | SDL_CreateThread 函数创建线程 | SDL_WaitThread 函数等待线程执行 )

处理音视频同步 视频画面渲染 音视频解码 SDL 多线程 可以 提高 程序性能 和 响应能力 , 可以更好处理 音视频编解码、视频渲染 这种大量数据计算场景 ; SDL 多线程 是 跨平台 ...没有被分离线程保持为“僵尸”状态,直到此函数清理它们。 * 不进行清理会导致资源泄漏。 * * 一旦通过此函数清理了一个线程,引用 SDL_Thread 变为无效,不应再次引用。...要么使用该函数,要么使用此函数, * 但不要同时使用两者,否则行为未定义。 * * NULL 传递给此函数是安全;它不执行任何操作。...SDL_InitSDL_Quit 函数 ; SDL 线程执行步骤如下 : 首先 , 定义了 int threadFunction(void *data) 类型线程函数 ; 然后 , 调用 SDL_CreateThread...\n"); SDL_Init(SDL_INIT_VIDEO); // 准备线程数据 int a = 666; // 创建线程 SDL_Thread *thread

8810
您找到你想要的搜索结果了吗?
是的
没有找到

【FFmpeg】SDL 开发环境搭建 ( SDL 简介 | 下载 SDL 开发库 | 拷贝动态库到 C:WindowsSysWOW64 目录 | SDL 开发库配置到 Qt 项目 )

include 目录下是 SDL 相关头文件 ; lib 目录下是 动态库 ; 下面的 SDL2.lib 文件 作为动态链接库导入库 , 该文件中并不包含实际函数代码 , 只包含了链接到相应...DLL 动态库所需信息 ; 构建程序时 , 链接器会使用 .lib 文件来解析 DLL 动态库 函数引用 , 函数定义在 DLL 中 , 引用定义在 lib 文件中 ; SDL2.dll 是 动态链接库...32 位 ; 进入 x86 目录 , 查看 动态库具体内容 : 3、拷贝动态库到 C:\Windows\SysWOW64 目录 SDL2-devel-2.0.10-VC\SDL2-2.0.10..." 构建套件 " 设置为 默认 " MSVC 2015 " 即可 ; 运行效果如下 : 5、 SDL 开发库配置到 Qt 项目 SDL2-devel-2.0.10-VC.zip 开发库 解压后完整目录...\n"); // 创建 SDL 窗口对象 SDL_Window *window = NULL; // 初始化 SDL 环境 , 用于播放视频 SDL_Init(SDL_INIT_VIDEO

16610

【音视频连载-001】基础学习篇- SDL 介绍以及工程配置

C++ 工程关联 SDL 库 接下来就是在 C++ 工程中关联 SDL 库,便于在工程中引用 SDL 相关头文件。...link_directories 是库所在文件夹添加在路径中去,这样在编译时就能链接到这个库。...在 MAC 上也可以把路径设置成 /usr/local,所有的库安装时在这个目录 lib 和 include 目录下也有一份索引。 最后将我们要编译程序关联上 SDL 这个库。..." << endl; SDL_Init(SDL_INIT_EVERYTHING); return 0; } SDL_InitSDL 初始化函数,可以根据所需功能选择性初始化也可以全部初始化...如果程序正常输出并且正常退出,那么说明环境配置 OK 了,后面就可以进行功能开发了。 总结 以上就是音视频基础学习连载 001 篇。

1.1K10

【FFmpeg】SDL 音视频开发 ① ( SDL 窗口绘制 | SDL 视频显示函数 | SDL_Window 窗口 | SDL_Renderer 渲染器 | SDL_Texture 纹理 )

* 这些是可以传递给SDL_Init()标志。您应该指定将在应用程序中使用子系统。...关闭已打开 SDL 窗口 释放内存中已加载图像和音频资源所占用内存空间 停止所有线程 , 避免应用退出后仍然占用 CPU 资源 如果 SDL 应用程序退出前不调用 SDL_Quit 函数 , 会发生...; flags 参数 : 窗口属性标志位 , 这个参数也是 位掩码 , 可使用 | 运算符 进行多个位掩码 组合设置 ; SDL_Window* 返回值 : 返回窗口引用 ; 代码示例...SDL_Window 窗口对象 , 创建 渲染器 用于在该窗口中绘制图像 ; index 参数 : 设置 渲染驱动程序索引 , 设置 -1 表示使用第一个支持指定标志渲染驱动程序 ;...下载 SDL 开发库 | 拷贝动态库到 C:\Windows\SysWOW64 目录 | SDL 开发库配置到 Qt 项目 ) 代码基础上 , 编写代码 ; 完整代码参考 https://download.csdn.net

7110

使用SDL2显示一张图片,SDL2上手贴

,这里只显示图片,所以只初始化VIDEO系统,更多支持查看官方文档 SDL_Init(SDL_INIT_VIDEO); //为了显示png图片,额外使用了图片库,所以要单独初始化...IMG_Init(IMG_INIT_JPG); //建立SDL窗口 SDL_Window * window = SDL_CreateWindow("SDL2 Displaying Image...显而易见,从绘图哲学角度看,SDL/OpenGL/Direct3D所采用绘图方式,显然更适合3D类绘图、动画加速,那么这种技术平面绘图,比如就是单纯视频播放,是如何加速呢?...GTK/MFC/QT/Cocoa也是显示相关这没错,但是它们主要是提供用户程序界面管理、显示及事件处理。...sdl2_image)意思是,sdl2_image代码库及其依赖库(这里当然就是sdl2库)编译参数和引用库参数全部显示出来,作为字符串加入到编译命令中去。

1.6K70

FFmpeg简易播放器实现-最简版

如下内容引用自“雷霄骅,视音频编解码技术零基础学习方法”: 解协议 流媒体协议数据,解析为标准相应封装格式数据。...这些信令数据包括播放控制(播放,暂停,停止),或者网络状态描述等。解协议过程中会去除掉信令数据而只保留视音频数据。...初始化SDL子系统:缺省(事件处理、文件IO、线程)、视频、音频、定时器 if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER...创建SDL窗口,SDL 2.0支持多窗口 // SDL_Window即运行程序后弹出视频窗口,同SDL 1.x中SDL_Surface screen = SDL_CreateWindow...SDL_Texture渲染至SDL_Window。 sdl rect: 对应数据结构SDL_Rect SDL_Rect用于确定SDL_Texture显示位置。

1.4K30

音视频八股文(5)--SDL音视频渲染实战。会使用就行,不需要深究。

01-SDL子系统 SDL功能分成下列数个子系统(subsystem): ◼ SDL_INIT_TIMER:定时器 ◼ SDL_INIT_AUDIO:音频 ◼ SDL_INIT_VIDEO:视频 ◼...SDL_INIT_JOYSTICK:摇杆 ◼ SDL_INIT_HAPTIC:触摸屏 ◼ SDL_INIT_GAMECONTROLLER:游戏控制器 ◼ SDL_INIT_EVENTS:事件 ◼ SDL_INIT_EVERYTHING...• SDL_PumpEvents():硬件设备产生事件放入事件队列,用于读取事件,在调用该函数之前,必须调用SDL_PumpEvents搜集键盘等事件。...总之,事件是SDL中一个非常重要概念,处理事件可以使程序更加灵活和响应用户。对于各种不同事件类型,可以通过SDL提供函数和数据结构来进行处理。...在SDL中,可以通过互斥锁和条件变量(信号量)来实现线程间同步。 总之,SDL提供了丰富多线程接口,可以让开发者更加方便地进行多线程编程,以提高程序性能和响应速度。

37320

【音视频连载-004】基础学习篇-SDL 加载图片并显示

CMake 工程配置 av-beginner 项目的 CMake 配置做了一些改动,创建了一个 cmake_utils 目录,在该目录下创建了一个 CMakeLists.txt ,里面存放一些自定义函数...,专门用来做开源库链接加载工作,如下图红框内容所示: 定义了一个 init_path 宏,宏功能和函数是有些类似的,在里面定义了不同开源库路径变量,后续只要引用这些变量就好了。...如果你电脑上路径不同,修改这里宏定义就行。 如果 CMake 操作不熟悉的话,建议阅读之前写过文章,涵盖了很多基础操作。...在完成了 SDL_Image CMake 配置之后,就需要在工程主 CMakeLists.txt 文件中把它包含进去,现在还只是在 cmake_utils 目录中,这样是引用不到宏。...break; } } // pImageSurface 内容传输到 上 SDL_BlitSurface

59110

音视频技术(4)-SDL播放PCM

SDL 是一套跨平台音视频播放框架,对齐了底层硬件差异,开发者可以专注于音视频处理,本文记录在iOS上使用SDL播放pcm音频裸数据实现过程。pcm是音频裸数据。...sdl编译:可以直接在sdl官网下载源码编译成iOS平台使用.a静态库,编译方式有两种,1)xcode编译;2)shell脚本编译,详细可以参考源码里readme文档 源码目录:...image.png 用sh脚本编译.a文件,最后运行不过去,会报错,在sdl论坛里提问了,也没有人回答,建议用第一种方式编译,笔者在学习过程中节省时间,直接扣了别人已经编译好.a文件...集成:1)copy 头文件到工程目录下,2) 添加库引用,参考如下库引用,可能有用不到 ?...(); if(SDL_Init(SDL_INIT_AUDIO | SDL_INIT_TIMER)){ printf("Could not initialize SDL

90820

音视频八股文(5)--SDL音视频渲染实战。会使用就行,不需要深究。

01-SDL子系统SDL功能分成下列数个子系统(subsystem):◼ SDL_INIT_TIMER:定时器◼ SDL_INIT_AUDIO:音频◼ SDL_INIT_VIDEO:视频◼ SDL_INIT_JOYSTICK...():纹理数据拷贝给渲染器◼ SDL_RenderPresent():显示◼ SDL_Delay():工具函数,用于延时◼ SDL_Quit():退出SDL系统◼ SDL_Window 代表了一个“...• SDL_PumpEvents():硬件设备产生事件放入事件队列,用于读取事件,在调用该函数之前,必须调用SDL_PumpEvents搜集键盘等事件。...总之,事件是SDL中一个非常重要概念,处理事件可以使程序更加灵活和响应用户。对于各种不同事件类型,可以通过SDL提供函数和数据结构来进行处理。...在SDL中,可以通过互斥锁和条件变量(信号量)来实现线程间同步。总之,SDL提供了丰富多线程接口,可以让开发者更加方便地进行多线程编程,以提高程序性能和响应速度。

42600

【FFmpeg】SDL 音视频开发 ③ ( SDL 事件处理 | SDL_Event 数据结构分析 | 事件处理流程 | SDL 事件获取函数 | SDL_WaitEvent 函数 )

环境 , 设置要开发子系统 ; // 初始化 SDL 环境 SDL_Init(SDL_INIT_VIDEO); 然后 , 调用 SDL_CreateWindow 函数创建窗口 ; // 创建 SDL_Window...初始化SDL SDL_Init(SDL_INIT_VIDEO); // 2....事件 , 此时退出事件循环 , 继续执行代码就会关闭窗口 , 释放 SDL 资源 , 程序运行结束 ; 运行程序后弹出事件窗口 : 点击 窗口中 关闭按钮 , 就会触发 SDL_QUIT 事件 ;... SDL_Event 变量地址传入 SDL_PollEvent 函数 ; 最后 , 根据 SDL_PollEvent 函数返回值 , 决定是否处理事件 ; 如果返回 1 , 则处理事件 ;...初始化SDL SDL_Init(SDL_INIT_VIDEO); // 2.

7910

android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程

-3.1.12/Android.mk include src/main/jni/SDL2_mixer/external/smpeg2-2.0.0/Android.mk 目的在于,SDL2_mixer里面包含开源库编译进来...然后在我们main.cmain方法里面加入 //初始化mix,MP3格式 if (Mix_Init(MIX_INIT_MP3) < 0) { printf("Mix_Init: %s\...https://gitorious.org/rowboat/external-libmad.git libmad模块抓下来。...等待下载完成,然后我们进入d盘下,下载好目录,复制到我们项目的app\src\main\jni\SDL2_mixer\external目录下,并且改名为libmad 然后我们修改app\src\main.../configure --help 进行查看都有哪些命令,然后进行配置,配置参数里面的CC CXX这些路径,需要自己修改对应自己真正arm编译位置。 .

2.2K100
领券