离屏渲染学习笔记

linux CEF 离屏渲染详解 Linux CEF 离屏渲染详解 1.下载linux版本的cef源码 下载地址:https://cef-builds.spotifycdn.com/index.html 下载对应的源码  tar -xjvf 文件名.tar.bz2 // 解压到当前文件夹 2. 编译cef 1、自行安装cmake make gcc g++ gdb等 工具 2、首先 cmake 编译 cef文件夹内的CMakeLists.txt 文件生成 MakeFile 文件 3、再用 阅读详情

离屏渲染学习笔记

MAY 6TH, 2015

一、概念理解

OpenGL中,GPU屏幕渲染有以下两种方式:

  • On-Screen Rendering

意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。

  • Off-Screen Rendering

意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。

二、离屏渲染的是是非非

相比于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在两个方面:

  • 创建新缓冲区

要想进行离屏渲染,首先要创建一个新的缓冲区。

  • 上下文切换

离屏渲染的整个过程,需要多次切换上下文环境:先是从当前屏幕(On-Screen)切换到离屏(Off-Screen);等到离屏渲染结束以后,将离屏缓冲区的渲染结果显示到屏幕上有需要将上下文环境从离屏切换到当前屏幕。而上下文环境的切换是要付出很大代价的。

三、离屏渲染触发方式

设置了以下属性时,都会触发离屏绘制:

  • shouldRasterize(光栅化)
  • masks(遮罩)
  • shadows(阴影)
  • edge antialiasing(抗锯齿)
  • group opacity(不透明)

需要注意的是,如果shouldRasterize被设置成YES,在触发离屏绘制的同时,会将光栅化后的内容缓存起来,如果对应的layer及其sublayers没有发生改变,在下一帧的时候可以直接复用。这将在很大程度上提升渲染性能。

而其它属性如果是开启的,就不会有缓存,离屏绘制会在每一帧都发生。

四、另一种特殊的“离屏渲染”

按照之前的说法,如果将不在GPU的当前屏幕缓冲区中进行的渲染都称为离屏渲染,那么就还有另一种特殊的“离屏渲染”方式:CPU渲染。

如果我们重写了drawRect方法,并且使用任何Core Graphics的技术进行了绘制操作,就涉及到了CPU渲染。整个渲染过程由CPU在App内同步地完成,渲染得到的bitmap最后再交由GPU用于显示。

五、Instruments

Instruments的Core Animation工具中有几个和离屏渲染相关的检查选项:

  • Color Offscreen-Rendered Yellow

开启后会把那些需要离屏渲染的图层高亮成黄色,这就意味着黄色图层可能存在性能问题。

  • Color Hits Green and Misses Red

如果shouldRasterize被设置成YES,对应的渲染结果会被缓存,如果图层是绿色,就表示这些缓存被复用;如果是红色就表示缓存会被重复创建,这就表示该处存在性能问题了。

六、如何抉择

现在摆在我们面前得有三个选择:当前屏幕渲染、离屏渲染、CPU渲染,该用哪个呢?这需要根据具体的使用场景来决定。

  • 尽量使用当前屏幕渲染

鉴于离屏渲染、CPU渲染可能带来的性能问题,一般情况下,我们要尽量使用当前屏幕渲染。

  • 离屏渲染 VS CPU渲染

由于GPU的浮点运算能力比CPU强,CPU渲染的效率可能不如离屏渲染;但如果仅仅是实现一个简单的效果,直接使用CPU渲染的效率又可能比离屏渲染好,毕竟离屏渲染要涉及到缓冲区创建和上下文切换等耗时操作。

总之,具体的选择应该由性能测试结果来决定。

七、写在最后

在赵岩同学的点拨下才理解了离屏渲染的概念,在此表示感谢!

如理解有误还请大家指出。

Cesium高阶学习五、离屏渲染 阅读详情

相关推荐

JavaScript-WebGL2学习笔记五-离屏渲染

Author: kagulaDate: 2018-03-30Description:          这是我《WebGL Lesson 16 – rendering to textures》的学习笔记。源文地址:http://learningwebgl.com/blog/?p=1786Content:WebGL中离屏渲染有三个步骤组成:[第一步]新建frame buffer和同frame buf...

lee353086的专栏 1340

离屏渲染(OffscreenRendering)

在此模式下,所有的渲染操作都会在当前屏幕视图之外的内存区域进行。只有当所有的渲染操作完成后,才会将最终的图像传输到屏幕上。canvas)上进行所有的绘制操作,这包括绘制图像和一些额外的元素(如注视点、手势、面部等)。然后只有当所有的绘制操作都完成后,才会把最终的图像渲染到页面上的。这种方式的一个重要好处是可以避免屏幕闪烁或者不必要的重绘,因为所有的渲染工作都是在后台完成的,用户不会看到半成品的渲染结果。总的来说,离屏渲染是一个强大且灵活的工具,能提供更优雅和高效的渲染解决方案。canvas 元素上。

yihuangran的博客 3615

【learnOpenGL学习笔记_20】OpenGL高级教程 - 帧缓冲(离屏渲染)入门实践

本文我们来学习 帧缓冲(Framebuffer) 的原理和操作方法。

同学小张的博客 176

切圆角 离屏渲染_OpenGL学习笔记(三)-关于离屏渲染你需要知道的知识

0.测试代码在开始之前,先看看如下的代码://1.按钮存在背景图片 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom btn1.frame = CGRectMake(100, 30, 100, 100); btn1.layer.cornerRadius = 50; [self.view addSubview:btn1]; [b...

weixin_32191051的博客 514

OpenGL-离屏渲染

什么叫做离屏渲染 正常情况下,渲染数据存放在帧缓冲区(Frame Buffer)中,但是在特定条件下,需要先将渲染数据先放在离屏缓冲区(Offscreen Buffer)中,在将多个图层的渲染数据叠加计算后,再传入帧缓冲区进行渲染,这种情况就叫做离屏渲染。 正常渲染流程 APP中的数据经过CPU计算和GPU渲染后,将结果存放在帧缓冲区,利用视频控制器从帧缓冲区中取出,并显示到屏幕上。 在GPU的渲染流程中,显示到屏幕上的图像是遵循大画家算法按照由远及近的顺序,依次将结果存储到帧缓冲区 视屏控制器从帧缓冲

zwj_zny的博客 4717

OpenGL之离屏渲染

作者:范大可 链接:https://juejin.cn/post/6899635441201643534 什么是离屏渲染 Off-Screen Rendering意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作 为什么需要离屏渲染 因为在帧缓冲区渲染一个视图到屏幕中就抛弃的机制.所以当我们有多组视图需要组合随后统一处理的时候.需要在屏缓冲区额外开辟一个离屏的缓冲区去记录这些视图.随后统一处理.最后渲染显示出来 怎么产生离屏渲染 我们首先分析圆角产生离屏渲染的情况: 回顾一下.当我

henry_lei的博客 2097

离屏渲染学习笔记 /iOS圆角性能问题

离屏渲染学习笔记 一、概念理解 OpenGL中,GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。 Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。 二、离屏渲染的是是非非 相比于当前屏幕渲染,离屏渲...

weixin_30273501的博客 176

cef离屏渲染osr示例

用vs2017编译通过

OpenGL学习笔记(混合、面剔除、帧缓冲)

OpenGL的混合、面剔除、帧缓冲

lzh804121985的博客 1174

利用LTspice设计Pt100测温电路

是一种广泛使用的温度传感器,它属于(RTD, Resistance Temperature Detector)的类型,通常用于温度测量。在0°C时,的电阻值为100欧姆,且它的电阻值会随着温度的升高而升高。PT100热电阻温度阻值对应表)因此可以根据这一特性来检测出环境温度。

2301_77033628的博客 2412

C语言实战:高效端口扫描器的多线程优化与性能对比

本文详细介绍了使用C语言开发高效端口扫描器的多线程优化技术,包括TCP全连接扫描、SYN半连接扫描和FIN扫描的实现原理。通过线程池、I/O复用技术和性能优化策略,显著提升扫描效率,并与Nmap进行性能对比。文章还涵盖了常见问题解决方案及安全伦理注意事项,为开发者提供全面的实战指导。

ol789012的博客 134

Android离屏渲染

与iOS同事聊天时聊到圆角会使用离屏渲染的方式绘制,影响性能;Android上有没有不知道,学习了一下整理了这篇文章。Android 圆角与离屏渲染(Offscreen Rendering)一、什么是离屏渲染?离屏渲染是指系统在显示内容前,先渲染到临时缓冲区(Offscreen Buffer),再合成到屏幕的过程。它会增加 GPU 负载,可能导致卡顿、掉帧或耗电增加。二、圆角是否会触发离屏渲染?取决于实现方式实现方案是否离屏渲染?性能影响适用场景❌ 否最优纯色/渐变背景圆角❌ 否最优。

Dengzm94 1927

Comsol 管道导波裂纹检测:从建模到求解的完整流程解析

本文详细解析了使用Comsol Multiphysics进行管道导波裂纹检测的完整仿真流程。从几何建模、材料定义、物理场设置到网格划分与求解后处理,系统阐述了如何构建高保真虚拟模型以模拟导波与裂纹的相互作用。重点分享了激励信号设置、频散效应处理及参数化扫描等实战技巧,旨在帮助工程师与研究人员高效优化无损检测方案,降低实验成本。

weixin_29207439的博客 73

Cesium 中的离屏渲染

本文参考了众多文章,均列在了最后。部分内容来自个人理解,欢迎指正交流。为了达到更加真实的渲染效果或其他计算需求,很多时候需要利用被渲染物体在其他状态下(比如通过另一相机渲染)的中间渲染结果,处理到最终显示的渲染场景中。这种中间渲染结果,就保存在颜色缓冲区深度缓存区。由于其结果并不直接被显示出来,所以这种技术也被称为。在深入了解 Cesium 的离屏渲染前,需要先了解 WebGL 的渲染过程。

总要开始写的博客 5447

Latex里面关于作者名字显示有灰色; 二级+三级标题斜体;

Latex里面关于 作者名字显示有灰色; 二级+三级标题斜体,与正文的距离; 邮箱字体;ORCID字体设置(整理不易,请先关注,Thanks)

m0_61015717的博客 746

Keil C51里用printf打印数据,为啥总出乱码?手把手教你%bd、%hd、%ld的正确用法

本文深入解析Keil C51中printf打印数据出现乱码的根本原因,并提供格式符%bd、%hd、%ld的正确用法指南。通过详细的调试技巧和实战案例,帮助开发者解决串口输出问题,提升单片机开发效率。

weixin_26854829的博客 281
上一篇: 细说GCD
下一篇: 清除xcode中的Welcome to Xcode中的最近打开的文件
hsf_study
博客等级 码龄11年 10粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值