位置: 编程技术 - 正文

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中点画线算法)

  • 账面价值计税基础算法
  • 加计抵减不符合怎么办
  • 盘盈固定资产明细账怎么填写?
  • 理财收益交增值税
  • 按工程进度支付工程款怎么描述
  • 实物投资账务处理
  • 事业单位预收账款属于什么科目
  • 旧公司库存如何管理
  • 机票的差额发票可以报销吗
  • 小规模纳税人需要汇算清缴吗
  • 营改增后房地产开发企业需要交哪些税?
  • 企业为职工支付的家庭财产保险
  • 关于环保税的计税依据
  • 不征税的政府补助如何开票
  • 可转债税前收益和税后收益
  • 怎么核算租赁合同的印花税?
  • 分期消费的实际收益
  • 企业所得税税率2.5% 5% 25%
  • 财务中暂估入账会计分录
  • 企业所得税汇算表
  • 人力成本费用率和人工成本利润率
  • 个体工商户应申报套餐无增值税吗
  • 允许企业所得税税前扣除的公益性捐赠的条件包括
  • 鸿蒙可以看小电影吗
  • 新win10浏览器
  • 税费缴纳比例
  • 增值税进项税额转出的情况有哪些
  • PHP:Memcached::setMultiByKey()的用法_Memcached类
  • linux系统网络日志
  • 管理费用的会计编码
  • 按下电源按钮时锁定计算机怎么弄
  • uniapp安装插件
  • 以前年度损益调整属于哪类科目
  • 企业为员工提供服务要交增值税吗
  • 无形资产本月增加本月摊销如何设置函数
  • 仓鼠模拟器3d无限金币中文
  • php将数据导出到excel
  • 月收入10万以下免增值税
  • php读取php文件内容
  • 公司支付的广告费是什么
  • access数据库丢失原因
  • 哪些公司可以开电费发票
  • 清空表sql语句
  • 减免的企业所得税是否需要征税 税屋
  • 商业银行提取的盈余公积可用于
  • 物流报关什么意思
  • 现金往来款怎么做账
  • 上个月结转的流量下个月能用吗
  • 虚增利润怎么调整
  • 发票验旧后才能领新发票吗
  • 叉车累计折旧如何结转
  • 房屋租赁费交什么税
  • 历年案例分析题及答案
  • 个人报销费用怎么做分录
  • 什么时候用税前项目举例说明工程项目
  • 老项目简易征收税率
  • 企业租个人房屋个税代扣代缴
  • 企业租用个人房屋的财税处理
  • 怎么设置库存限额
  • vim如何操作
  • xp系统优化软件哪个好
  • Linux下通过script 命令记录(数据库)操作步骤
  • win7升级到win10专业版教程
  • linux文件解压gz
  • bootstrap媒体查询写法
  • ecmascript6入门
  • excel 工具栏
  • Unity3D游戏开发培训课程大纲
  • Node.js中的核心模块包括哪些内容?
  • jquery escape
  • 触摸模式设置
  • js函数的使用规则
  • javascript Keycode对照表
  • python中的格式化输出用法总结
  • javascript面向对象精要
  • 国际税务局邮箱是多少
  • 一般纳税人开票的税率是多少
  • 契税税收优惠政策2021
  • 2010年末实现净利润390万,宣告发放现金股利40万,在计算本年未分配利润时,是否要减掉这40万?
  • 城市维护建设税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设