音视频开发十六:SDL基础概念

news2025/2/27 21:48:19

SDL

纹理渲染

纹理

在SDL中,纹理是图像的描述信息。用SDL_Texture表示一个纹理对象(texture),它是一个用于存储像素数据的结构体类型

渲染

​ **互联网解释:**渲染是在电脑绘图中是指用软件从模型生成图像的过程。模型是用严格定义的语言或者数据结构对于三维物体的描述,它包括几何、视点、纹理以及照明信息。

​ 常说的视频渲染:对采集下的数字影片进行了剪接、加效果、加字幕、音乐等操作,当生成影片时需要将后加入的素材融合到影片中并压缩成为影片最终格式,这个过程就是渲染。

​ **SDL中渲染:**就是将数据生成图像的过程。这个数据是纹理缓冲区储存的数据。

纹理渲染

纹理渲染就是将缓冲区(内存)中保存的图像描述的信息(纹理)生成图像的过程(渲染)。

案例理解: 小A同学画一幅画

下面,我们以生活中的一个例子‘小A同学画一幅画’ 来解释SDL渲染,纹理概念。

计算机使用SDL渲染显示一幅图就相当于小A同学在墙上画一幅画, 我们先将整个过程中的角色划分为纹理, 渲染器, gpu(画家), cpu(小A同学)

依据SDL编程方式,这里又分为两种情况:

  1. 不使用纹理

    即由cpu直接绘制一幅画(cpu需要将最原始的rgb/YUV数据,刷到屏幕上), 相当于学生小A直接在墙上画画

  2. 使用纹理

    相当于小A同学(cpu)指挥画家(gpu)在纸上画, 然后把纸贴在墙上。 这个过程中画是由画家(gpu)画的, 小A同学负责发号施令(即告诉画家画什么), 纸代表纹理, 画家代表gpu, 所有绘制的操作都是在纹理上进行。事实上,纹理的概念并不仅仅是一张纸, 还包括小A同学中对这幅画的构思,可以理解成画画的算法, 而纸相当于是一个载体(内存空间,用于保存这些构思)。 gpu根据纹理就可以计算出这幅图每个像素点的颜色( 相当于画家根据小A同学的描述,画出一幅画一样)

可以看出,使用纹理,可以减轻cpu的负担, cpu处于一个发号施令的角色,图片的计算过程交给效率更好的gpu来做,可以提高渲染的效率。

为什么纹理数据是GPU处理:因为GPU是图像处理单元,GPU通常有专门的纹理处理单元,所以能够纹理数据进行处理。

问题分析

为什么使用纹理?

​ 有一张图片,图片像素使用RGB24真彩色表示,把它传给显卡,显卡也能帮我们展现出来。既然这样,为什么还用纹理?

​ 假如画一条渐变颜色的直线。对于RGB数据来说,每一个像素点你都要描述出来,红黄蓝每个分量的比例多少。对于纹理来说,它不会这样描述,他只会描述有一条线,线的起点和重点在哪里,中间颜色是怎么渐变的,只会把这个描述信息介绍给你。所以呢像RGB或YUV数据,是比较大的主内存中的空间。CPU需要把这些相关数据传输到显卡,显卡接收到这些数字数据,然后把这些数字信号转换为可见的图像来显示视频。对于纹理来说,它只需要主内存很小的空间,只存储这些描述信息,将这些描述交给显卡之后,通过显卡的GPU计算,计算的结果实际和RGB所描述是一样的,最终展示到屏幕上。

总结:

  • 纹理占主内存的空间小。

  • 纹理数据的计算在显卡的GPU上,通过硬件加速去渲染。RGB数据需要经过CPU计算之后再交给显卡,显卡直接去显示就好了,GPU是专门用来处理图像和渲染的,它比CPU在处理图像方面更快。

为什么说RGB数据交给CPU来处理

​ 这个说法起始不妥当。RGB数据默认情况下会交给CPU来处理。因为在大多数情况下,CPU是计算机主控制器,它负责调度和管理所有的计算和处理任务,包括图像处理和渲染。

在处理图像和视频数据时,CPU会启动图像处理程序或其他相关应用程序来执行处理任务。CPU可以进行一些基本的图像处理任务,如裁剪、缩放、旋转、调整色度等。但是,CPU在处理大量数据时,可能会出现性能瓶颈,导致处理速度变慢。

如果需要进行大规模的图像或视频处理,可以考虑使用GPU来加速处理过程,提高处理效率。但是,需要注意的是,使用GPU处理RGB数据需要使用相关GPU加速库和图像处理软件,否则会影响处理效果和速度。

​ 具体使用CPU还是GPU来处理RGB数据,需要根据具体需求和处理任务来决定。如果需要进行大规模的数据处理和计算,建议使用GPU来处理RGB数据以获得更好的性能和效率。

渲染的基本流程

基本原理是,首先创建一个window窗口,它是我们要渲染的目标。然后,要有一个渲染上下文(就是渲染器),该上下文中一方面存放着要渲染的目标,也就是windows窗口;另一方面是存放着一个缓冲区(就是纹理对象),该缓冲区用于存放渲染的内容(渲染内容就是对图像的描述信息)。

渲染的内容可以是点、线、各种图形以及图片,视频的各种组合。这些组合后的内容首先被存放到缓冲区中,最终SDL将缓冲区中的内容渲染到窗口中。

说简单点:内存图像经过渲染器转换为纹理,再把纹理交给显卡计算,展示到窗口上去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】线程互斥详解:多线程会有什么问题?什么是互斥锁?C++怎么封装使用互斥锁?

多线程可以提高程序的并发性和运行效率,充分利用计算机的多核资源. 前面的几篇文章已经介绍了, Linux线程的基本概念、基本控制等内容. 我们已经看到了多线程可以提升运行效率等. 但是, 也发现了问题, 多线程可能会导致输出混乱、访问共享资源混乱、竞争等问题. 输…

Vue中 import ...与import{ }、import from ‘@路径‘ 与 import from ‘../路径‘

遇到的问题: 不带{ }以组件方式 引入后,用 组件名. 变量 的方式一直提示变量未定义的问题,改成直接 带{ }引入变量直接使用变量就不提示错误了,(不知道是不是我引入的包和他人不一样的原因...)&#xff0…

至尊宝工具箱 - 电商运营选品必备工具下载安装详细教程

简介 至尊宝插件是一款电商网络浏览插件,能够帮助店主更好地运营自己的网店,这款插件功能十分全面强大,可以实现搜主图、快速商家商品、优化商品标题等,通过帮助店家增加曝光量来增效销售,感兴趣的朋友快来体验。 下…

使用Superlink控制物联网网关远程调试PLC示例(PLC/HMI调试工具)

目录 1.Superlink工具使用说明 1.1软件安装 1.2账号登录 1.3设备查看 1.4菜单栏使用 2. Superlink网关远程调试网口/串口设备示例 2.1 远程调试西门子网口1200 PLC示例 2.2 远程调试欧姆龙232 PLC实串口通讯示例 3. 常见使用问题及技术支持 3.1 Superlink工具使用问题…

Mybatis核心

文章目录前言一、Configuration二、MappedStatement三、SqlSession四、Executor五、StatementHandler六、ParameterHandler七、ResultSetHandler八、TypeHandler总结前言 SqlSession是MyBatis提供的面向用户的操作数据库API。那么MyBatis底层是如何工作的呢?为了解…

vue.js表情文本输入框组件

文章目录参考链接效果图代码emoji.jsonEmojiText.vue使用参考链接 JS操作文本域获取光标/指定位置插入 vue.js支持表情输入 ttkwsd博客 效果图 代码 不能换行的bug已处理… emoji.json 表情图片放在public的emoji文件夹下面 emoji.json放在src/components/EmojiText文件夹…

Linux 生成pem文件 用于免密登录

1.在远程机器生成.pem文件 生成密钥对: $ ssh-keygen -t rsa -b 2048 -v 直接确认下一步 查看生成的密钥对: $ ls ~/.ssh/ 将私钥重命名至id_rsa.pem: $ mv ~/.ssh/id_rsa ~/.ssh/id_rsa.pem 修改~/.ssh/目录权限: $ chmod …

力扣sql中等篇练习(三)

力扣sql中等篇练习(三) 1 树节点 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # not in匹配上了返回的值是1,casw when里面也是可以使用not in和子查询的 # 注意去重的时候需要筛选掉null值 SELECT id,case when p_id is null then Rootwhen (id …

暄桐好作业之《临王蒙〈具区林屋图〉》

告诉大家一个好消息“暄桐好作业”栏目上新啦~除了与大家分享正在进行的课程好作业,还会向大家展示来自暄桐学长学姐们的优秀国画作品。希望正在上课的暄桐同学们能够从学长学姐的分享以及暄桐教室专业助教的点评中,从中获益并获得力量,继续努…

Java基础(十七):日期时间API

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

chatGPT开发公司

OpenAI是chatGPT的开发公司,成立于2015年,总部位于美国旧金山。OpenAI致力于开发和推广人工智能技术,包括自然语言处理、视觉识别、机器学习等领域,旨在推动人工智能技术对全球社会和经济的影响和发展。 除了chatGPT之外&…

日撸 Java 三百行day31

文章目录day31 整数矩阵及其运算面向对象思想java异常处理java中的getter和setter方法代码day31 整数矩阵及其运算 面向对象思想 结合之前day7和day8面向过程开发,只关注了矩阵加法和矩阵乘法的功能。而day31是面向对象开发,一个矩阵类,在这…

Python实现驾考自动答题,隔壁老王每次都100分....

人生苦短,我用python 不知道大家都考完驾照没? 这个驾照不管大家有没有,我相信大家都是这个: 朋友最近在考驾照,快考科一了… 我微微一笑当场给他整个活~ 用Python整了几十行代码,给朋友实现一下自动答…

前端面试题 - 基础(HTML、HTTP、WEB)

文章目录1、前端 SEO 需要注意哪些2、img 标签上的 title 和 alt 区别3、浏览器输入 url 到显示过程4、浏览器渲染过程5、常见请求方式6、常见的状态码7、网站性能优化8、语义化理解9、浏览器内核理解10、H5的新特性11、离线存储使用,工作原理12、浏览器是如何管理和…

确保实时操作系统(RTOS)设备中的数据安全

导读1月28日大家庆祝了数据保护日,这是一项旨在促进保护数据隐私和安全的国际活动。为了提高人们对数据保护的意识,讨论实时操作系统中数据安全的问题势在必行。目前非常规操作系统已被广泛使用,所以了解这一系统非常重要,尤其是涉…

做完自动化测试,但别让不会汇报毁了你...

pytest 是一个成熟的全功能Python测试工具,可以帮助您编写更好的程序。它与 python 自带的 unittest 测试框架类似,但 pytest 使用起来更简洁和高效,并且兼容 unittest 框架。pytest 能够支持简单的单元测试和复杂的功能测试,pyte…

Javassist动态生成类使用,以及Arthas 查看动态代理生成类内容

java反射 反射的弊端: 性能开销: 因为反射涉及到动态解析的类型,所以某些Java虚拟机的优化不能被执行(因为它不能真正了解你在做什么)。因此,反射操作的性能比非反射操作的性能要慢,应该避免在对性能敏感的应用程序中频繁调用的代码部分。 …

C++记录总结及面试常见问题

C记录总结及面试常见问题指针和函数内存分区模型访问权限struct & class创建类构造函数静态成员this指针const 修饰成员函数友元friend重载运算符和重载函数继承读文件ifstream/fstreamvector中resize和reserve的区别智能指针左值与右值struct、class区别引用指针和函数 函…

Zabbix6.0升级到Zabbix6.4

1:现在的版本是6.0.3 2:停止Zabbix Server进程。 systemctl stop zabbix-server 若升级Zabbix proxy版本,需也停止Zabbix proxy服务 。 systemctl stop zabbix-proxy 3:我用的是MariaDB数据库名称是zabbix。 4: 查看…

windows11安装pytorch2.0

换了新电脑,好久没用windows了,配置一下环境,顺便记录一下方便帮助AI小白不会浪费时间在装环境上(一星期不夸张hah) 打开命令行,然后输入 nvidia-smi,检查自己的显卡驱动 也可以通过图形界面查…