位置: 编程技术 - 正文

SDL2源代码分析7:显示(SDL_RenderPresent())(srslte源码分析)

编辑:rootadmin

推荐整理分享SDL2源代码分析7:显示(SDL_RenderPresent())(srslte源码分析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sdwebimage源码,sdrsharp源码,sscom源代码,stl源代码剖析,sdr 开源,sdr 开源,sdwebimage源码解析,sdwebimage源码解析,内容如对您有帮助,希望把文章链接给更多的朋友!

=====================================================

SDL源代码分析系列文章列表:

SDL2源代码分析1:初始化(SDL_Init())

SDL2源代码分析2:窗口(SDL_Window)

SDL2源代码分析3:渲染器(SDL_Renderer)

SDL2源代码分析4:纹理(SDL_Texture)

SDL2源代码分析5:更新纹理(SDL_UpdateTexture())

SDL2源代码分析6:复制到渲染器(SDL_RenderCopy())

SDL2源代码分析7:显示(SDL_RenderPresent())

SDL2源代码分析8:视频显示总结

=====================================================

上一篇文章分析了SDL纹理赋值给渲染目标的函数SDL_RenderCopy()。这篇文章分析SDL显示视频最后的一个函数:SDL_RenderPresent()。

SDL2源代码分析7:显示(SDL_RenderPresent())(srslte源码分析)

SDL播放视频的代码流程如下所示。初始化: SDL_Init(): 初始化SDL。 SDL_CreateWindow(): 创建窗口(Window)。 SDL_CreateRenderer(): 基于窗口创建渲染器(Render)。 SDL_CreateTexture(): 创建纹理(Texture)。 循环渲染数据: SDL_UpdateTexture(): 设置纹理的数据。 SDL_RenderCopy(): 纹理复制给渲染器。 SDL_RenderPresent(): 显示。

上篇文章分析了该流程中的第6个函数SDL_RenderCopy()。本文继续分析该流程中的最后一个函数SDL_RenderPresent()。

SDL_RenderPresent()函数简介

SDL使用SDL_RenderPresent()显示画面。SDL_RenderPresent()的原型如下。

参数renderer用于指定渲染器。函数调用关系图

SDL_RenderPresent()关键函数的调用关系可以用下图表示。

上面的图片不太清晰,更清晰的图片上传到了相册里面:

渲染器中对应RenderPresent()的函数是D3D_RenderPresent(),它的源代码如下所示(位于renderdirect3dSDL_render_d3d.c)。

从代码中可以看出,该函数调用了2个最关键Direct3D的API:IDirect3DDevice9_EndScene():结束一个场景。IDirect3DDevice9_Present():显示。2.OpenGL

OpenGL渲染器中对应RenderPresent()的函数是GL_RenderPresent(),它的源代码如下所示(位于renderopenglSDL_render_gl.c)。

代码比较简单,只有两行。关键的显示函数位于SDL_GL_SwapWindow()函数中。下面看一下SDL_GL_SwapWindow()的代码(位于videoSDL_video.c。感觉这里调用关系稍微有点乱…)。从上述代码中可以看出,SDL_GL_SwapWindow()调用了SDL_VideoDevice的GL_SwapWindow()函数。我们看一下在“Windows视频驱动”的情况下,该函数的代码。在“Windows视频驱动”的情况下,调用GL_SwapWindow()实际上是调用了WIN_GL_SwapWindow()函数。看一下WIN_GL_SwapWindow()函数的代码(位于videowindowsSDL_windowsopengl.c)。

代码中调用了简单的一个函数SwapBuffers(),完成了显示功能。

3.Software

Software渲染器中对应RenderPresent()的函数是SW_RenderPresent(),它的源代码如下所示(位于rendersoftwareSDL_render_sw.c)。

从代码中可以看出,SW_RenderPresent()调用了一个函数SDL_UpdateWindowSurface()。我们看一下SDL_UpdateWindowSurface()的代码(位于videoSDL_video.c)。

SDL_UpdateWindowSurface()又调用了另一个函数SDL_UpdateWindowSurfaceRects()。继续看SDL_UpdateWindowSurfaceRects()的代码。

SDL_UpdateWindowSurfaceRects()调用了SDL_VideoDevice的UpdateWindowFramebuffer()函数。在“Windows视频驱动”的情况下,相当于调用了WIN_UpdateWindowFramebuffer()。我们看一下该函数的代码(位于videowindowsSDL_windowsframebuffer.c)

经过一系列的寻找之后,终于找到了Software渲染器显示视频的“源头”:BitBlt()函数。

在Xcode中使用GLUT开发OpenGL应用程序 Xcode是MacOSX中自带的开发环境。GLUT提供了跨越平台的OpenGL实用工具。本文讲述如何在Xcode3.2中使用GLUT来开发OpenGL应用程序。在Xcode的启动面板中,选Create

Qt环境下利用OpenGL显示三维模型 最近在做一个利用Qt开发的小程序,其中一项功能是读取三维点云数据式(如PLY、OBJ)数据,并利用OpenGL显示在程序窗口中。由于博主对OpenGL不太了解,

Ubuntu下QtOpenGL无法正常使用GLU库的解决方法 本文来自

标签: srslte源码分析

本文链接地址:https://www.jiuchutong.com/biancheng/373126.html 转载请保留说明!

上一篇:codeblocks配置GLUT(codeblocks配置文件在哪)

下一篇:OpenGL学习05_点画模式(点画多边形)(opengl中点画线算法)

  • 完税证明是可以抵扣吗
  • 差额征税的税率怎么计算
  • 工程附加税怎么计算
  • 出租车发票可以重新开吗
  • 管理费0.5%每年
  • 韩国购物小票怎么看图解
  • 跨年调整会计科目怎么写
  • 结构性存款是
  • 土地结转会计分录是什么
  • 企业抽奖用的奖品有哪些
  • 实收资本需要计提印花税吗
  • 免抵退分录怎么做
  • 三个月工资一次扣税多少
  • 保证金逾期退还
  • 普通硅酸盐水泥和矿渣硅酸盐水泥的区别
  • 代购本无罪,逃避关税须处罚
  • 迁出注销类别怎么写
  • 企业专项储备属于什么科目
  • 固定资产报废需要在固定资产系统中
  • 历年亏损企业开什么发票
  • 发票打错了重新打要交税吗
  • 控股子公司利润并表
  • 公司成立前的准备工作有哪些
  • 调整增值税税率
  • powershell不显示用户名
  • windows 10如何使用
  • mac怎么传文件到百度网盘上
  • win7系统的系统配置里设置开机启动项
  • 职工福利费算职工薪酬吗
  • 消耗性生物资产如何结转成本
  • 购买现金支票的工本费计入什么科目
  • win10平板模式不好用
  • 为什么无形资产是非流动资产
  • php如何使用session
  • linux zen3
  • 公司清算债权债务如何清理
  • 双色球python算法
  • php数组实现原理
  • 消费税会计分录完整案例
  • 老生常谈php中传统验证与thinkphp框架(必看篇)
  • 本地部署stable diffusion需要什么显卡
  • 委托开发和购买开发
  • 补交当年的增值税
  • 公司房租收据怎么写
  • 年终奖每个月发
  • 证券公司收益凭证管理办法
  • 税务新增办税人员
  • 财务预算资产负债表如何编制
  • 以摊余成本计量的债权投资与以公允价值计量且其变动
  • 上级拨付的债券怎么做账
  • 小额转账汇款服务最多转账多少钱
  • 营业外收入交企业所得税吗
  • 包装物租金如何界定
  • 房地产开发公司是做什么的
  • 筹资费用和财务费用一样吗
  • 新公司成立第一次会议内容
  • 本月应负担的修理费
  • 计提工资与实发工资有差额怎么计算成本
  • 建筑企业营改增之前计税方法
  • 一个真正的企业应该具备哪些特征
  • mysql增删改查实例
  • mysql57服务无法启动,找不到文件夹
  • 惠普tpn-c126笔记本
  • fedora s9
  • bios里怎么找不到usb启动
  • 2021年win10累积更新
  • ubuntu服务器安装matlab2014a环境配置
  • alp是什么文件
  • windowsxp资源管理器在哪里
  • rtos用什么语言
  • win1020h2无法重启
  • intellij idea2021安装教程
  • javascript总结
  • JavaScript的instanceof运算符学习教程
  • javascript要怎么学
  • 传智播客在线课程
  • 营改增后一般纳税人动产租赁税率
  • 车船税的缴纳证明是什么意思?
  • 税务一体化监督起主导作用的是
  • 增值税劳务费发票图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设