zoukankan      html  css  js  c++  java
  • 使用SDL播放一个视频代码流程大体

    摘抄自雷神博客 https://blog.csdn.net/leixiaohua1020/article/details/40680907

    
    使用SDL播放一个视频代码流程大体如下
    初始化: 
    SDL_Init(): 初始化SDL。 
    SDL_CreateWindow(): 创建窗口(Window)。 
    SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。 
    SDL_CreateTexture(): 创建纹理(Texture)。 
    循环渲染数据: 
    SDL_UpdateTexture(): 设置纹理的数据。 
    SDL_RenderCopy(): 纹理复制给渲染器。 
    SDL_RenderPresent(): 显示。
    
    /*********************************/
    
    SDL_Init()函数原型如下:
    该函数可以确定希望激活的子系统
    int SDLCALL SDL_Init(Uint32 flags) 其中,flags可以取下列值: SDL_INIT_TIMER:定时器 SDL_INIT_AUDIO:音频 SDL_INIT_VIDEO:视频 SDL_INIT_JOYSTICK:摇杆 SDL_INIT_HAPTIC:触摸屏 SDL_INIT_GAMECONTROLLER:游戏控制器 SDL_INIT_EVENTS:事件 SDL_INIT_NOPARACHUTE:不捕获关键信号(这个不理解) SDL_INIT_EVERYTHING:包含上述所有选项 /*********************************/ SDL_CreateWindow()用于创建一个视频播放的窗口。
    SDL_CreateWindow()的原型如下。 SDL_Window
    * SDLCALL SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags); 参数含义如下。 title :窗口标题 x :窗口位置x坐标。也可以设置为SDL_WINDOWPOS_CENTERED或SDL_WINDOWPOS_UNDEFINED。 y :窗口位置y坐标。同上。 w :窗口的宽 h :窗口的高 flags :支持下列标识。包括了窗口的是否最大化、最小化,能否调整边界等等属性。 ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL, ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS, ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_ALLOW_HIGHDPI. 返回创建完成的窗口的ID。如果创建失败则返回0。 /*********************************/ SDL中使用SDL_CreateRenderer()基于窗口创建渲染器。
    SDL_CreateRenderer()原型如下。 SDL_Renderer
    * SDLCALL SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags); 参数含义如下。 window : 渲染的目标窗口。 index :打算初始化的渲染设备的索引。设置“-1”则初始化默认的渲染设备。 flags :支持以下值(位于SDL_RendererFlags定义中) SDL_RENDERER_SOFTWARE :使用软件渲染 SDL_RENDERER_ACCELERATED :使用硬件加速 SDL_RENDERER_PRESENTVSYNC:和显示器的刷新率同步 SDL_RENDERER_TARGETTEXTURE :不太懂 返回创建完成的渲染器的ID。如果创建失败则返回NULL。 /*********************************/ 使用SDL_CreateTexture()基于渲染器创建一个纹理。
    SDL_CreateTexture()的原型如下。 SDL_Texture
    * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, Uint32 format, int access, int w, int h); 参数的含义如下。 renderer:目标渲染器。 format :纹理的格式。后面会详述。 access :可以取以下值(定义位于SDL_TextureAccess中) SDL_TEXTUREACCESS_STATIC :变化极少 SDL_TEXTUREACCESS_STREAMING :变化频繁 SDL_TEXTUREACCESS_TARGET :暂时没有理解 w :纹理的宽 h :纹理的高 创建成功则返回纹理的ID,失败返回0。 /*********************************/ SDL使用SDL_UpdateTexture()设置纹理的像素数据。
    SDL_UpdateTexture()的原型如下。
    int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, const SDL_Rect * rect, const void *pixels, int pitch); 参数的含义如下。 texture:目标纹理。 rect:更新像素的矩形区域。设置为NULL的时候更新整个区域。 pixels:像素数据。 pitch:一行像素数据的字节数。 成功的话返回0,失败的话返回-1/*********************************/ SDL使用SDL_RenderCopy()将纹理数据复制给渲染目标。
    SDL_RenderCopy()的原型如下。
    int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_Rect * dstrect); 参数的含义如下。 renderer:渲染目标。 texture:输入纹理。 srcrect:选择输入纹理的一块矩形区域作为输入。设置为NULL的时候整个纹理作为输入。 dstrect:选择渲染目标的一块矩形区域作为输出。设置为NULL的时候整个渲染目标作为输出。 成功的话返回0,失败的话返回-1/*********************************/ SDL使用SDL_RenderPresent()显示画面。
    SDL_RenderPresent()的原型如下。
    void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); 参数renderer用于指定渲染器。
  • 相关阅读:
    项目文件.NET下编译C++代码时出现fatal error C1083: 无法打开包括文件:“xuhk_JNIHelloWorld.h”: No such file or directory错误的解决方法。
    消息错误INSTALL_FAILED_INSUFFICIENT_STORAGE
    元素链表数据结构:静态链表
    对象类Android应用程序资源管理器(Asset Manager)的创建过程分析
    23种模式中的外观模式
    接口与抽象类的区别
    java中通用的数据库连接与关闭方法类的简单写法
    对Hello China操作系统比较客观的评价
    Hello China V1.68版本源代码、安装包和相应文档,欢迎下载适用
    使用Service Bus Explorer 工具来管理和测试Topics、 Queues 和 Relay Services
  • 原文地址:https://www.cnblogs.com/nanqiang/p/13684196.html
Copyright © 2011-2022 走看看