问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

图形渲染原理

发布网友 发布时间:2022-11-15 19:11

我来回答

1个回答

热心网友 时间:2024-07-30 12:57

我们都知道可视化程序都是由 CPU 和 GPU 协作进行的。那么我们下面先来介绍下这两个的基本概念:

计算机将存储在内存中的形状转换绘制到屏幕上的过程叫做渲染。渲染过程中最常用的技术就是光栅化

介绍屏幕图像显示原理前,需要先了解下 CRT 显示器原理。

CTR 电子*是从上到下呈 Z 字形逐行扫描,扫描完成后会就会呈现一帧的画面,然后电子*会回到初始位置从新进行扫描。为了同步显示器的显示过程和视屏控制器,显示器会用硬件时钟产生一系列的定时信号。当电子*进行扫描时,显示器会发出一个水平同步信号(horizonal synchronization),简称 HSync;当一帧画面绘制完成后,电子*回复到原位,准备绘制下一帧前,显示器会发出一个垂直同步信号(vertical synchronization),简称 VSync。显示器通常以固定的频率进行刷新,这个刷新率就是 Vsync 信号产生的频率。

上图所示为 CPU、GPU和显示器常见的工作方式。CPU计算好显示的内容,提交至 GPU,GPU渲染完成后将数据提交到帧缓冲区中,显示器会按照 Vsync 信号逐帧读取帧缓冲区中的数据,经过数模转换最终在显示器上显示。

但是这种情况下是最简单的情况,帧缓冲区只有一个。当没有引入垂直同步信号的技术的时候,这里会造成一个常见的问题,屏幕撕裂

造成的原因是因为,当显示器读取帧缓冲区的内容时,当前帧缓冲区的数据还是上一帧的数据,所以,在逐行扫描显示的是老数据,当GPU在扫描的过程中,提交了新的数据到帧缓冲区后,显示器会读取到新的内容,所以导致下方绘制的是新的数据,这种情况就是屏幕撕裂产生的原因。

解决屏幕撕裂的方法,是使用垂直同步信号 (Vsync) ,相当于加锁操作,只有 GPU 渲染完一帧,放入帧缓冲区中,显示器才会去读取帧缓冲区中的内容。

在这种情况下,帧缓冲区的读取和刷新都会存在较大的效率问题,为了解决效率问题,就引入了新的技术,双缓冲区

双缓冲区的机制就是,GPU会预先渲染一帧数据放入一个缓冲区中,用于视频控制器的读取。当下一帧渲染完毕后,GPU 会直接把视屏控制器的指针指向第二个缓冲区。

但是双缓冲区仍然会产生掉帧的问题。具体掉帧的原因可以参考我写的另一篇文章 【UIView的绘制原理及优化】 。

在使用了双缓冲区和垂直同步信号后,由于总要等待缓冲区交换之后再进行下一帧的渲染,使得帧率无法完全得到硬件的最高水平。所以引进了三缓冲区

即在等待垂直同步信号到来之前,来回交替两个离屏缓冲区,而在垂直同步信号到来时,屏幕缓冲区会和最近渲染完成的离屏缓冲区进行交换。

如果你开发过iOS/Mac,就会对此框架比较熟悉。iOS 下使用的是 UIKit,MacOS 下使用的是 AppKit,我们通常使用 UIKit/AppKit 组件中的 Layout 以及 backgroundColor 等属性来完成日常的界面绘画工作。
其实 UIKit/AppKit 本身并不具备屏幕成像的能力,它主要负责用户操作事件的响应。

Core Animation官方文档

Core Animation Programming Guide

Core Animation,乍一看好像是做动画的,其实动画只是 Core Animation 中的一部分。它最初是有一个叫 Layer Kit 演变而来的。

Core Animation 主要用于渲染、混合和动画视觉元素,可以理解为是一个复合引擎。旨在为了可能快的组合屏幕上不同的显示内容。这些内容被分解成独立的图层,即 CALayer。从本质上来言,CALayer 是用户所能在屏幕上看到的一切的基础。

早期苹果底层也是使用 OpenGL ES 来进行开发的。在 2014 年的时候推出了 Metal,2018年的时候, OpenGL 的 API 已经被苹果废弃了。苹果推出 Metal 说是将 3D 图像的渲染性能提高了 10 倍。但是主要的原因还是想将核心技术掌握在自己手中。

Metal 类似于 OpenGL ES,也是一套第三方标准。Core Animation、Core Image、SceneKit、SpriteKit 等显然框架都是构建于 Metal 之上的。

虽然 OpenGL 已经被苹果所废弃,但是苹果已经实现了一套机制将 OpenGL 命令无缝桥接到 Metal 上,由 Metal 担任真正与硬件交互的工作。

Core Graphics 是基于 Quartz 高级绘图引擎,主要用于运行时绘制图像。开发者可以用此框架处理基于路径的绘图、转换、颜色管理、离屏渲染、渐变、阴影、图像管理等。

图形处理器,支持 Metal 和 OpenGL ES的图形硬件。也就是我们常提到的 GPU。

UIKit 中的每一个 UI 视图控件内部都有一个关联的 CALayer,即 backing layer。

由于这种一一对应的关系,视图层级拥有 视图树的树形结构,对应 CALayer 拥有 图层树的树形结构。

其中视图的职责是创建并管理图层,以确保子视图在层级关系中添加以及被移除时,其关联的图层在图层树中也有相应的操作,即保证视图树和图层数在结构上的一致。

实际上,app本身并不负责渲染,渲染有一个独立的进程负责,即 Render Server进程。

Core Animation 流水线的详细过程如下:

在 Core Animation 流水线中,app 调用 Render Server 的 Commit Transaction其实可以细分为以下4个步骤:

以上整个流程所执行的时间远远超过了 16.67 ms,因此为了满足对屏幕的 60FPS 刷新率的支持,需要将这些步骤进行分解,通过流水线的方式进行并行执行,如下图所示:

计算机那些事(8)——图形图像渲染原理

iOS 图像渲染原理

渲染的意思

渲染的基本原理是通过数学模型和计算机图形学技术,将虚拟的三维场景或模型投影到二维平面上,并计算出每个像素的颜色值,以生成最终的图像。这个过程涉及到光照模型、纹理贴图、阴影处理等多种技术,目的是创造出真实感或艺术感的视觉效果。二、渲染技术的应用 渲染技术广泛应用于电影、游戏、建筑设计、工业...

图像渲染原理

也是一个缓冲,它可以是一堆字节、整数、像素或者其他东西。渲染缓冲对象的一大优点是,它以 OpenGL 原生渲染格式储存它的数据,因此在离屏渲染到帧缓冲的时候,这些数据就相当于被优化过的了。渲染缓冲对象(RBO) 将所有渲染数据直接储存到它们的缓冲里,而不会进行针对特定纹理格式的任何转换,这样它们就...

什么是渲染?

简单都来说就是把抽象的模型变成屏幕上可以显示的二维图像,有些大文件的渲染仅一帧画面就需要12小时甚至更长,《大圣归来》就是我国渲染农场renderbus渲染的作品。4、写作中的渲染 在写作学中,作为写作思维的基本原理,渲染就是对文章主题、立意的展开性表达,即通过思维的展开,生成思想、生成材料、生成...

大数据渲染包括哪些内容,大数据渲染主要技术原理有哪些?

该技术原理如下:1、利用分布式计算框架对大规模的数据进行处理和计算,以提高渲染的效率和速度。2、应用图形学算法和技术,如光照模型、纹理映射和多边形填充,来生成和渲染图形。3、利用可视化算法,如数据聚类、降维和图形布局算法,来处理和展示大规模的数据。4、通过并行计算和GPU加速,利用多核处理器和...

计算机渲染原理及图像撕裂掉帧

撕裂 :根本原因是由于CPU/GPU计算处理时间跟屏幕刷新时间不一致导致的,也就是显卡输出帧的速度比显示器快(例如GTX1080运行市面上大多数1080P的游戏帧率都能轻松破百,但大多数人家里的显示器刷新率都是60Hz),显示器的处理速度跟不上显卡,在显示器处理第一帧的时候,第二帧就又到了,导致同一个...

渲染怎么解释

渲染(Render)是一种高级的图形处理技术,通常用于创建逼真的视觉效果,并应用于各种艺术领域,例如绘画、设计和建筑等。在绘画中,渲染通常通过添加深度、细节和光影等元素来增加画面的真实感和丰富度。这些技术包括光照、材质和纹理等,以及三维建模、摄影和绘画等方法。在设计领域中,渲染通常用于创建逼真...

渲染是做什么的

具体就是把计算机存储的三维模型转换成显示器上的二维图像。把实体模型通过赋予材质,灯光,环境等因素,通过渲染器渲染成逼真的效果,以期获得具有特定艺术效果数码影像。绘画中的渲染:在绘画中,渲染就是用水墨或淡的色彩烘染物象,以增强艺术效果。写作中的渲染:作为写作思维的基本原理,渲染就是对文章...

在线等,三重缓冲是什么

三重缓冲的基本原理是在内存中创建三个缓冲区,分别用于存储前一帧、当前帧和下一帧的图像数据。这三个缓冲区以循环的方式使用,当GPU完成一帧图像的渲染后,它会被写入到下一个缓冲区中,而前一个缓冲区的内容则会被丢弃,从而确保图像渲染的连续性。这种机制可以有效避免图像撕裂和延迟,提高渲染效率...

Lottie 动画渲染神器的使用及原理讲解

动画制作流程图:)讲解原理就不得不说Json文件解析,因为它的可读性差,了解Json结构会更容易理解它的渲染机制 爆炸星星 动画中有星星,圆圈,小点点 ,其实是绘制在不同的layer图层上,因为动画开始时他们各自要做的动画是不一样的,分层绘制可以防止过度绘制 和动画控制 LottieDrawable把一张复杂的图片...

图形渲染是什么意思

首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其它视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的...

图形渲染开发 图形渲染器 图形渲染器建立失败 图形渲染程序员 图形渲染用什么cpu 李萨如图形原理 绘图渲染 草图怎么渲染 草图大师渲染设置参数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哪个手机卡流量多又便宜 四级成绩单选了电子版怎么办啊? 直播平台排名是什么样的? 春季养生男人喝什么茶可保肝护肾? 养肾护肾的最好方法食补 养肾护肾吃什么最好食疗 养肾护肾的最好方法食补 养肾护肾的最好方法食补 怀孕初期不能吃的食物列表 鹿鞭怎么泡酒 快来学学吧 验孕棒说明书 ?验孕棒多少天才可以验出来 验孕棒怎么用 ...头发自然卷的算厉害的,有效果图就推荐几张,该怎么弄 〓〓〓---求-男生熟头发- 和纹理烫的 效果图---〓〓〓 弹弹兽咖啡有什么神奇功效 弹弹兽咖啡除了减肥还有啥功能? 支付宝老版本10.2.38好不好 真我gtneo2怎么换壁纸-真我gtneo2换壁纸怎么设置 真我q3壁纸怎么换-真我q3自动换壁纸怎么弄 郑州市工人路332院电力小区55号楼土地产权多少年 尖叫饮料有几种口味的? AE加入s_glow素材变黑什么原因? 难道安装的时候就有问题了。还是我下... Eve'sGlow咖啡磨砂真的可以减肥吗 Eve’s Glow怎么读 怎么在Lakewood官网上定制吉他?怎么付款?税率怎么选择? 朋友摔坏我的吉他不想还,我应该怎么办? 我想问一下8p后玻璃保修吗 《塞尔达传说:荒野之息2》内容太多 制作人希望玩家能耐心等待 三星3502卡槽发烫什么原因 公费师范生要求 如何查出另一半情侣头像呢? 第二次改名申请 摄像机拍摄2-3分钟屏幕出现缓冲区溢满怎样处理?- 问一问 C语言如何调整屏幕缓冲区 图像撕裂,掉帧以及二级缓存三级缓存的由来 鄂州创力新能源科技有限公司怎么样? 200万千瓦光伏电站每年的发电量 鄂州燧石太阳能工程有限公司怎么样? 电脑系统修复把之前的东西删除能恢复吗? 为什么长垣黄河滩区搬迁房每栋楼一楼是空置 房子空置半年以上物业费怎么收只需缴纳70% 农村要统一搬迁?该选房子还是安置款?还有3类房无资格享受补偿 成都市住房合股公司出租住房搬迁暂行规定 印度瓦拉纳西 印度手机制式 除了牛粪芯片,印度居然还有牛粪汽车?!画面太美,不忍直视 世界上寿命最长的人多少岁啊? 伴奏改调用什么软件 生日这天唱歌免费吗? 北京中立鸿建设工程咨询有限公司是不是皮包公司 金钰晨唱歌为什么免费 有没有什么好的唱歌软件免费的