chromium渲染页面的重要概念

本文介绍了Chromium渲染页面的关键概念,包括位图、纹理、缓冲区的使用,以及绘画、光栅化、合成等阶段。讲解了脏区域、绘图、双缓冲、帧缓冲区对象和损坏区域的概念,同时对比了保留模式与立即模式的渲染方式,并提及了上下文虚拟化的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

位图:内存中像素值的缓冲区(主内存或GPU的视频RAM)

纹理:位图意味着应用于GPU上的3D模型

纹理四边形:应用于非常简单模型的纹理:四角形多边形,例如矩形。当你想要的只是将纹理显示为一个扁平的矩形表面,可能被翻译(2D或3D)时很有用,这正是我们在合成时所做的。

失效(dirty)文件区域标记为脏,通常意味着需要重新绘制。样式系统有类似的失效概念,因此样式也可能变脏,但最常见的是指需要重新绘制的区域。

绘画:在我们的术语中,RenderObjects调用GraphicsContext API的渲染阶段,以自己的可视化表示形式

光栅化:给每个像素正确配色,也就是把屏幕空间的二维顶点转化为屏幕上的像素。在我们的术语中,填充备份RenderLayers的位图的渲染阶段。这可以在RenderObjects调用GraphicsContext时立即发生,或者如果我们使用SkPicture记录进行绘制并使用SkPicture回放进行光栅化,则可以在以后发生。

合成:在我们的术语中,渲染阶段将RenderLayer的纹理组合成最终的屏幕图像

绘图:在我们的术语中,实际将像素放到屏幕上的渲染阶段(即将最终的屏幕图像放到屏幕上)。

backbuffer:双缓冲时,渲染的屏幕缓冲区,而不是当前显示的缓冲区

frontbuffer 双缓冲时,当前显示的屏幕缓冲区,而不是当前正在显示的屏幕缓冲区

swapbuffers:切换前后缓冲区

帧缓冲区对象:可以渲染到屏幕外的纹理的OpenGL术语,就像它是普通的屏幕缓冲区(例如后备缓冲区)一样。对我们有用,因为我们希望能够渲染到纹理然后合成这些纹理; 对于FBO,我们可以假装为WebGL提供自己的框架,而不必担心页面上发生的任何其他事情。

损坏(damage):由于用户交互或程序化更改(例如JavaScript更改样式)而被“弄脏”的屏幕区域。这是更新时需要重新绘制的屏幕区域。

保留模式:一种渲染方法,其中图形系统维护要渲染的对象的完整模型。保留Web平台,因为DOM是模型,平台(即浏览器)跟踪DOM的状态,其API(即JavaScript对DOM的访问)可用于修改或查询当前状态,但浏览器可以随时从模型中呈现,而无需任何JavaScript指令。

立即模式:一种渲染方法,其中图形系统不跟踪整个场景状态,而是立即执行给予它的任何命令并忘记它们。要重绘整个场景,需要重新发出所有命令。Direct3D是立即模式,Canvas2D也是如此。

上下文虚拟化:GPU进程不一定为给定的命令缓冲区客户端创建实际的驱动程序级GL上下文。它还可以为多个客户端提供共享的实际上下文,并在解析其GL命令时将GL状态恢复到给定客户端的预期状态 - 我们将此阴影状态称为“虚拟上下文”。这在Android上用于解决某些驱动程序的错误和性能问题(缓慢的GL上下文切换,跨多个上下文的FBO呈现的同步问题,以及使用共享组时的崩溃)。 Chrome通过GPU黑名单文件在驱动程序子集上启用上下文虚拟化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值